SQLAlchemy: devuelve el objeto existente en lugar de crear uno nuevo al llamar al constructor

Quiero usar sqlalchemy de una manera como esta:

email1 = EmailModel(email="[email protected]", account=AccountModel(name="username"))
email2 = EmailModel(email="[email protected]", account=AccountModel(name="username"))

Por lo general, sqlalchemy creará dos entradas para la cuenta y vinculará cada dirección de correo electrónico a esta. Si configuro el nombre de cuenta como sqlalchemy único está lanzando una excepción que me dice que ya existe una entrada con el mismo valor. Esto tiene todo el sentido y funciona como se espera.

Ahora descubrí un camino por mi cuenta que permite el código mencionado y solo crea una cuenta solo una vez sobrescribiendo elnuevo Constructor de la Clase 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)

Esto está funcionando perfectamente para mí. Pero la pregunta es:

¿Es esta la manera correcta?¿Hay alguna forma sqlalchemy de lograr lo mismo?

Estoy usando las últimas versiones de SQLAlchemy 0.8.x y Python 2.7.x

Gracias por cualquier ayuda :)

Respuestas a la pregunta(2)

Su respuesta a la pregunta