SQLAlchemy: InstrumentList nicht iterierbar?
Verfasst: Samstag 23. Februar 2013, 22:20
Hallo wieder einmal,
folgender Code (Minimalbeispiel)führt in der markierten Zeile am Ende zur Fehlermeldung
Die Docs von SQLAlchemy behaupten allerdings, dass die Objekte im Allgemeinen in Listen untergebracht werden. "microphones" ist auch vom Typ "InstrumentedList". Warum also der Fehler?
folgender Code (Minimalbeispiel)
Code: Alles auswählen
from sqlalchemy import create_engine, ForeignKey
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, sessionmaker
engine = create_engine('sqlite:///microphones.db', echo=True)
Base = declarative_base()
class Manufacturer(Base):
__tablename__ = 'manufacturer'
id = Column(Integer, primary_key=True)
name = Column(String)
microphones = relationship('Microphone', backref='manufacturer')
def __init__(self, name):
self.name = name
class Microphone(Base):
__tablename__ = 'microphone'
id = Column(Integer, primary_key=True)
name = Column(String)
comment = Column(String)
manufacturer_id = Column(Integer, ForeignKey('manufacturer.id'))
def __init__(self, name, comment=''):
self.name = name
self.comment = comment
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
manufacturer_test = Manufacturer('Neumann')
manufacturer_test.microphones.extend(Microphone('KM 1')) # <------- FEHLER
session.add(manufacturer_test)
session.commit()
Code: Alles auswählen
TypeError: 'Microphone' object is not iterable