를 호출 할 때의 새를 객체를 기존의 대신 만들어 반환 :SQLAlchemy의 :이 같은 방법으로 SQLAlchemy의를 사용하려면 생성자
이email1 = EmailModel(email="[email protected]", account=AccountModel(name="username"))
email2 = EmailModel(email="[email protected]", account=AccountModel(name="username"))
보통 SQLAlchemy의 계정에 대한 두 개의 항목을 작성하고 각 이메일 주소를 링크 이. 계정 이름을 고유 한 것으로 설정하면 sqlalchemy는 동일한 값을 가진 항목이 이미 있음을 알려주는 예외를 throw합니다. 이것은 모든 것을 이해하고 예상대로 작동합니다.
지금 내가 언급 코드를 허용하고 바로 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)
나를. 하지만 질문은 :
- 올바른 방법입니까?
- 동일한 결과를 얻으려면 SQL을 사용할 수 있습니까?
나는 최신 0.8.x SQLAlchemy의 버전 및 파이썬 2.7.x 도움 :
Oukay, 정확히 내가 찾고있는 것이죠! –