【发布时间】:2015-02-14 08:28:24
【问题描述】:
我正在尝试使用自动递增的唯一 ID 字段作为其他表中的外键。我的模型如下:
class User(Base):
__tablename__ = 'Users'
uid = Column(INT, primary_key=True, autoincrement=True)
name = Column(TEXT)
email = Column(TEXT)
dateRegistered = Column(TIMESTAMP)
phone = Column(TEXT)
class AddressMap(Base):
__tablename__ = 'AddressMaps'
uid = Column(INT, primary_key=True, autoincrement=True)
userId = Column(INT, ForeignKey('Users.uid'))
addressId = Column(INT, ForeignKey('Addresses.uid'))
dateCreated = Column(TIMESTAMP)
user = relationship("User", backref=backref('AddressMaps'))
address = relationship("Address", backref=backref('AddressMaps'))
class Address(Base):
__tablename__ = 'Addresses'
uid = Column(INT, primary_key=True, autoincrement=True)
street = Column(TEXT)
city = Column(TEXT)
state = Column(TEXT)
postal = Column(TEXT)
dateRegistered = Column(TIMESTAMP)
我的问题是,当我创建一个用户对象时,它不是使用 uid 值创建的。我理解这是因为该对象尚未提交到数据库。问题是,由于 User 对象的 uid 值为 None,所以我无法将 AddressMap 对象与其链接。
在 SQLAlchemy 中处理这个问题的惯用方法是什么?
【问题讨论】:
标签: python mysql sqlalchemy auto-increment foreign-key-relationship