2017-01-18 10 views
0

Ich bin ein Neuling in SQLAlchemy, also bitte vergeben, was eine elementare Frage sein muss.Einfache SQLAlchemy Update-Tabelle basierend auf Wert in einer anderen Tabelle

Ich habe eine Datenbanktabelle properties (in SQLALchemy als Objekt Property zugeordnet), die ein Feld MEBID enthält. Ich habe eine andere Tabelle mebs (in SQLAlchemy als MEB zugeordnet). Ich möchte das Feld properties.MEBID auf mebs.id setzen, wo properties.PostCode == mebs.PostCode.

Ich kann diese einfach in SQL tun, um den

update properties, mebs set properties.mebid = mebs.id where mebs.PostCode = properties.PostCode 

Befehl aber mit dem Tun es in SQLAlchemy habe Schwierigkeiten. Wenn ich den Befehl

session.query(Property, MEB).\ 
    filter(Property.PostCode == MEB.PostCode).\ 
    update({Property.MEBID : MEB.id}) 

versuchen bekomme ich

InvalidRequestError: This operation requires only one Table or entity be specified as the target. 

Ich weiß, dass dies elementar sein muss, da es ein so grundlegender Betrieb ist, kann aber nicht herausfinden, wie es gemacht wird.

Antwort

1

zu aktualisieren:

for prop, meb in session.query(Property, MEB).filter(Property.PostCode == MEB.PostCode).all(): 
    prop.MEBID=meb.id 
    session.add(prop) 
Verwandte Themen