2017-05-27 42 views
0

我正在使用帶有ORM映射器的SQLAlchemy。使用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") 

在我的經驗看來,如果我同時創建一個UrlDomainName就足夠了添加一個會話並承諾,另一個也堅持到數據庫。喜歡的東西:

domain = DomainName("www.stackoverflow.com") 
url = Url("https://stackoverflow.com/questions/ask", domain) 
session.add(url) 
session.commit(url) 

看來,使用這種方法的一個可以節省一些代碼行,尤其是在情況下創建對象需要創建相關對象的小圖。

事實上,即使是這個例子也可以通過在Url構造函數中創建DomainName對象來簡化,而不是在外部創建它,並將其作爲參數傳遞給Url構造函數。

但這是一個很好的做法嗎?還是單獨將每個對象添加到會話更好?

回答