sqlalchemy外來鍵的正向查詢與反向查詢(一對多)
阿新 • • 發佈:2021-02-01
技術標籤:Python
sqlalchemy資料庫外來鍵中的正向引用與反向引用
父表:被引用方的表
子表:引用父表的表(表中有父表的欄位,一般是父表id,並且定義relationship)
正向查詢:在子表中,查詢父表的資訊
反向查詢:通過父表,查詢子表的資訊
定義父表:
class User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True, autoincrement=True) username = db.Column(db.String(100), nullable=False)
定義子表:
class Article(db.Model): __tablename__ = 'article' id = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(100), nullable=False) content = db.Column(db.Text, nullable=False) author_id = db.Column(db.Integer, db.ForeignKey('user.id')) author = db.relationship('User', backref=db.backref('articles'))
注意:db.backref是反向查詢,在User表中需要引用後面的引數“articles”,如user.articles即可拿到User對應的Article,資料格式的列表。
示例:
def get(self): # 正向查詢 article=Article.query.filter_by(id=1).first() print('文章標題:',article.title) print('該文章的作者:',article.author.username) # 反向查詢 user=User.query.filter_by(id=1).first() print('username:',user.username) print('該作者對應的文章:',user.article) return 'ok'
執行結果: