當我想要使用SQLAlchemy在這樣的方式:SQLAlchemy的:返回現有的對象,而不是創建一個新的調用構造函數
email1 = EmailModel(email="[email protected]", account=AccountModel(name="username"))
email2 = EmailModel(email="[email protected]", account=AccountModel(name="username"))
通常SQLAlchemy的將創建一個帳戶的兩個條目,每個電子郵件地址鏈接到這個。如果我將accountname設置爲唯一的sqlalchemy正在拋出一個異常,它告訴我關於具有相同值的條目已經存在。這使得所有的意義和工作如預期。
現在我想通了,我自己的一種方式,它允許提到的代碼,只是通過覆蓋的新構造的AccountModel類創建一個帳戶只有一次:
def __new__(*cls, **kw):
if len(kw) and "name" in kw:
x = session.query(cls.__class__).filter(cls[0].name==kw["name"]).first()
if x: return x
return object.__new__(*cls, **kw)
這是可以正常使用的我。但問題是:
- 這是正確的方法嗎?
- 是否有sqlalchemy方式實現相同?
我使用的是最新的0.8.4版本的SQLAlchemy和Python 2.7.x
感謝所有幫助:)
Oukay,那就是我正在尋找的! –