在flask-sqlalchemy中插入一对多关系的新记录 - 代码日志

在flask-sqlalchemy中插入一对多关系的新记录

我在declaring models关于一对多关系的烧瓶-sqlalchemy教程。示例代码如下:

class Person(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    addresses = db.relationship('Address', backref='person',
                                lazy='dynamic')

class Address(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(50))
    person_id = db.Column(db.Integer, db.ForeignKey('person.id'))

现在我想知道如何使用这样的模型将新的记录插入数据库。我假设我需要一个构造函数init,但我很难理解它应该如何实现和使用。我在这里的主要问题是,人依靠地址和地址具有ForeignKey to Person,所以它应该提前知道人。

Plase可以帮助我理解它应该如何执行。

先谢谢你。

您不需要编写构造函数,您可以将Person实例上的addresses属性视为列表:

a = Address(email='foo@bar.com')
p = Person(name='foo')
p.addresses.append(a)

或者您可以将地址列表传递给Person构造函数

a = Address(email='foo@bar.com')
p = Person(name='foo', addresses=[a])

无论哪种情况,您都可以访问Person实例上的地址,如下所示:

db.session.add(p)
db.session.add(a)
db.session.commit()
print p.addresses.count() # 1
print p.addresses[0] # <Address object at 0x10c098ed0>
print p.addresses.filter_by(email='foo@bar.com').count() # 1
http://stackoverflow.com/questions/16433338/inserting-new-records-with-one-to-many-relationship-in-flask-sqlalchemy

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:在flask-sqlalchemy中插入一对多关系的新记录