Ich habe einige Probleme mit der Einstellung die Wörterbuchsammlung in Python SQLAlchemy up:SQLAlchemy - MappedCollection Problem
ich deklarative Definition von Tabellen verwenden. Ich habe Item
Tabelle in 1: N Beziehung mit Record
Tabelle. Ich habe die Beziehung mit dem folgenden Code auf:
_Base = declarative_base()
class Record(_Base):
__tablename__ = 'records'
item_id = Column(String(M_ITEM_ID), ForeignKey('items.id'))
id = Column(String(M_RECORD_ID), primary_key=True)
uri = Column(String(M_RECORD_URI))
name = Column(String(M_RECORD_NAME))
class Item(_Base):
__tablename__ = 'items'
id = Column(String(M_ITEM_ID), primary_key=True)
records = relation(Record, collection_class=column_mapped_collection(Record.name), backref='item')
Jetzt habe ich mit den Item
s und Record
s arbeiten möchten. Lassen Sie uns einige Objekte erstellen:
i1 = Item(id='id1')
r = Record(id='mujrecord')
Und nun möchte ich diese Objekte assoziieren mit dem folgenden Code:
i1.records['source_wav'] = r
aber die Record r
nicht die name
Attribut gesetzt haben (der Fremdschlüssel). Gibt es eine Lösung, wie dies automatisch sichergestellt werden kann? (Ich weiß, dass die Einstellung des Fremdschlüssels während der Record
Erstellung funktioniert, aber es klingt nicht gut für mich).
Vielen Dank
Wahrscheinlich nicht. Der Backref ist der Name eines Attributs, das sqlalchemy der anderen Seite der Relation (der Record-Klasse) hinzufügt, um auf das Objekt (Item-Instanz) zurückzugreifen, das die Vorwärtsreferenz enthält. Also macht 'item' Sinn - im Beispiel von honzas liefert r.item die Item-Instanz. –