Es handelt sich um ein bestehendes Objekt (t), bei welchem der ForeignKey bereits gesetzt ist.
Diesen ändere ich hier nun, mit einer einfachen Zuweiseung (self._m = m) und bekomme dann diese Warnung.
Hier auszugsweise die Deklaration der Klassen.
Code: Alles auswählen
class TrainingUnitData(_Base):
__tablename__ = 'TrainingUnit'
__oid = sa.Column('oid', sa.Integer, primary_key=True)
# ...
__machine_fk = sa.Column('machine', sa.Integer, sa.ForeignKey('Machine.oid'))
__machine = sao.relationship("MachineData", backref=sao.backref("TrainingUnitData", uselist=False))
def SetMachine(self, machine):
self.__machine = machine
class MachineData(_Base):
__tablename__ = 'Machine'
__oid = sa.Column('oid', sa.Integer, primary_key=True)
# ...
Bin mir auch nicht sicher, ob ich '__machine_fk' überhaupt benötige. Dort steht nur die 'oid' von der Maschine drin.
Code: Alles auswählen
>>> t.SetMachine(m)
/usr/lib/python3/dist-packages/sqlalchemy/orm/strategies.py:524: SAWarning: Multiple rows returned with uselist=False for lazily-loaded attribute 'MachineData.TrainingUnitData'
return self._emit_lazyload(session, state, ident_key, passive)