Python sqlalchemy:如何将其他表的对象与主键关联?

Python sqlalchemy:如何将其他表的对象与主键关联?,python,orm,sqlalchemy,Python,Orm,Sqlalchemy,我有一个事务表 class Transaction(Base): __tablename__ = 'transaction' id = Column('id', Integer, primary_key=True) name = Column('name', String) amount = Column('amount', Float) category_id = Column('category_id', Integer, ForeignKey('ca

我有一个
事务

class Transaction(Base):
    __tablename__ = 'transaction'
    id = Column('id', Integer, primary_key=True)
    name = Column('name', String)
    amount = Column('amount', Float)
    category_id = Column('category_id', Integer, ForeignKey('category.id'))
    date_created = Column('date_created', Date, default=datetime.now())
    date_modified = Column('date_modifed', Date, onupdate=datetime.now())
类别
表格

class Category(Base):
    __tablename__ = 'category'
    id = Column('id', Integer, primary_key=True)
    name = Column('name', String)
    subtype = Column('subtype', String)
我将事务数据集添加为

name, amount, category_id
Costo,59.0,5
Costo,20,5
Safeway,6.75,1
Safeway,11,1
Safeway,19,1
当我询问他们时,我也能看到他们

for transaction in session.query(Transaction):
    logging.info(transaction)
我也看到了数据

INFO:root:<Transaction(22, Medical Insurance, 110.0, 62, 2013-03-09, None)>
INFO:root:<Transaction(23, AllState Renter Insurance, 100.0, 77, 2013-03-09, None)>
如何连接不同表的对象

我确信仅仅使用
主键是不够的,但我还需要做什么?
请指教


我刚刚开始学习
SQLAlchemy
您可能需要创建
关系()

我不确定我是否完全理解了您的问题,但这应该为包含关联项目集合的每个类别附加一个
事务
属性。或者:

class Transaction(Base):
    __tablename__ = 'transaction'
    id = Column('id', Integer, primary_key=True)
    name = Column('name', String)
    amount = Column('amount', Float)
    category_id = Column('category_id', Integer, ForeignKey('category.id'))
    date_created = Column('date_created', Date, default=datetime.now())
    date_modified = Column('date_modifed', Date, onupdate=datetime.now())
    category = relationship("category")

要将多个对象按相反方向连接到一个对象(正如@daydreamer已经解决的)。

在我的
事务中添加以下行后,我能够引用与该事务相关的
类别

category = relationship('Category')
我的类
事务
最终看起来像

class Transaction(Base):
    __tablename__ = 'transaction'
    id = Column('id', Integer, primary_key=True)
    name = Column('name', String)
    amount = Column('amount', Float)
    category_id = Column('category_id', Integer, ForeignKey('category.id'))
    date_created = Column('date_created', Date, default=datetime.now())
    date_modified = Column('date_modifed', Date, onupdate=datetime.now())
    category = relationship('Category')
我可以看到输出为

INFO:root:<Transaction(28, ATT, 89.0, <Category(148, Utilities, Phone)>, 2013-03-09, None)>
INFO:root:<Transaction(27, Car Gas, 47.0, <Category(146, Utilities, Gas & Fuel)>, 2013-03-09, None)>
INFO:root:
信息:根目录:

感谢@David Marx指向正确的文档

很高兴能提供帮助。请保持该页面,如果您正在学习SQLalchemy,您可能需要经常引用它。
class Transaction(Base):
    __tablename__ = 'transaction'
    id = Column('id', Integer, primary_key=True)
    name = Column('name', String)
    amount = Column('amount', Float)
    category_id = Column('category_id', Integer, ForeignKey('category.id'))
    date_created = Column('date_created', Date, default=datetime.now())
    date_modified = Column('date_modifed', Date, onupdate=datetime.now())
    category = relationship('Category')
INFO:root:<Transaction(28, ATT, 89.0, <Category(148, Utilities, Phone)>, 2013-03-09, None)>
INFO:root:<Transaction(27, Car Gas, 47.0, <Category(146, Utilities, Gas & Fuel)>, 2013-03-09, None)>