嗨我有一個簡單的問題 - 我有2個表(地址和用戶 - 用戶有一個地址,很多用戶可以住在同一地址)...我創建了一個像這樣的sqlalchemy映射: 我讓我的會話,並嘗試查詢類似sqlalchemy關係映射
class Person(object):
'''
classdocs
'''
idPerson = Column("idPerson", Integer, primary_key = True)
name = Column("name", String)
surname = Column("surname", String)
idAddress = Column("idAddress", Integer, ForeignKey("pAddress.idAddress"))
idState = Column("idState", Integer, ForeignKey("pState.idState"))
Address = relationship(Address, primaryjoin=idAddress==Address.idAddress)
class Address(object):
'''
Class to represent table address object
'''
idAddress = Column("idAddress", Integer, primary_key=True)
street = Column("street", String)
number = Column("number", Integer)
postcode = Column("postcode", Integer)
country = Column("country", String)
residents = relationship("Person",order_by="desc(Person.surname, Person.name)", primaryjoin="idAddress=Person.idPerson")
self.tablePerson = sqlalchemy.Table("pPerson", self.metadata, autoload=True)
sqlalchemy.orm.mapper(Person, self.tablePerson)
self.tableAddress = sqlalchemy.Table("pAddress", self.metadata, autoload=True)
sqlalchemy.orm.mapper(Address, self.tableAddress)
myaddress = session.query(Address).get(1);
print myaddress.residents[1].name
=>我得到類型錯誤:「RelationshipProperty」對象不支持索引
我明白居民是有定義的關係,但赫克哪能得到給定地址分配給的居民的名單?! 感謝
以及我有兩個類在單獨的文件。我有我的數據庫初始化對象,它做的ORM self.tableAddress = sqlalchemy.Table(「pAddress」,self.metadata,autoload = True) addressMapper = sqlalchemy.orm.mapper(Address,self.tableAddress) self.tablePerson = sqlalchemy.Table(「pPerson」,self.metadata,autoload = True) personMapper = sqlalchemy.orm.mapper(Person,self.tablePerson) 當我做了你的建議並得到AttributeError:'Address'對象沒有屬性「居民」。是不是問題autoload = True「聲明?我不認爲backref被創建 – kosta5
我從來沒有用過.Table()...我的理解是,這是如果你連接到ORM外部的表。(正如在你的類中使用Table()或關係,但不能同時使用......)你可能會檢查 - http://www.sqlalchemy.org/docs/core/schema.html#binding-metadata-to-an-引擎或連接 –
此外,使用關係()爲一個單獨的文件中定義的表類是可以的...只要確保您的導入不是循環的,否則在第一次創建表時會引發問題。 –