我正在使用SQLAlchemy和ORM映射器。
假设我有一个Url
类,它指向DomainName
这样的类:
class Url(db.Model):
id = db.Column(db.Integer, primary_key=True)
path = db.Column(db.String(2083))
domain_id = db.Column(db.Integer, db.ForeignKey("domain_name.id"))
domain_name = db.relationship("DomainName")
根据我的经验,似乎如果我同时创建Url
和DomainName
,则只需将一个添加到会话并提交,另一个也会持久保存到数据库。类似的东西:
domain = DomainName("www.stackoverflow.com")
url = Url("/questions/ask", domain)
session.add(url)
session.commit(url)
似乎使用这种方法可以节省一些代码行,特别是在创建对象需要创建相关对象的小图的情况下。
事实上,即使这个例子也可以通过在Url
构造函数中创建DomainName对象而不是在外部创建它,并将其作为参数传递给Url
构造函数来简化。
但这是一个好习惯吗?或者,将每个对象单独添加到会话中会更好吗?
答案 0 :(得分:0)
注意:文档确认向会话添加一个对象,将通过级联添加其他相关内容:http://docs.sqlalchemy.org/en/latest/orm/tutorial.html#working-with-related-objects