完成数据库连接建表后,使用db.session.add(),db.session.commit()把需要存的数据保存到数据库表,同时对两张表建立了一对多的关系,但是通过主表反向查询,遍历子表结果的list为空。翻来覆去找,究竟是外键搞错了,还是relatiaoship弄错了,后来发现,注意了,是子表存数据时并没有给外键id赋值,导致查询为空。
#对两个表建立一对多关系
class Person(db.modle):
__tablename__ = 'person'
id = db.Column(Integer,primary_key=True,autoincrement=True)
name = db.Column(String(50),nullable=False)
pets = db.relationship("Pet", backref = "owner")
class Pet(db.modle):
__tablename__ = 'owner'
id =db. Column(Integer,primary_key=True,autoincrement=True)
name =db. Column(String(50),nullable=False)
owner_id = db. Column(Integer,db.Forignkey("person.id"))
#两个表插入数据
person = Person(name="Jhon")
pet = Pet(name="Dog",owner_id =person.id )#这种写法保证两个表的id一致
#pet = Pet(name="Dog",owner_id =1 )#示例大多这样写的
一定要这样显式的赋值子表外键值,否则主表和子表同样没法正反向查询。很多博主介绍直接忽略这个小细节,我也没注意,纠错一天才发现,希望能帮助到大家。