Python sqlalchemy自动递增值作为外键mysql

Python sqlalchemy自动递增值作为外键mysql,python,mysql,sqlalchemy,auto-increment,foreign-key-relationship,Python,Mysql,Sqlalchemy,Auto Increment,Foreign Key Relationship,我试图在其他表中使用自动递增的唯一ID字段作为外键。我的模型如下: class User(Base): __tablename__ = 'Users' uid = Column(INT, primary_key=True, autoincrement=True) name = Column(TEXT) email = Column(TEXT) dateRegistered = Column(TIMESTAMP)

我试图在其他表中使用自动递增的唯一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中处理这个问题的惯用方法是什么

您不需要uid。由于已在表之间创建了关系,因此可以向用户添加
AddressMap
对象:

samantha = User(name='Sam', email='sam@xyz.abc', phone='555-555-5555')
您现在可以访问
samantha.AddressMaps
集合(请参见
AddressMap
表中
user
关系下的
backref
)。您可以将
AddressMap
对象添加到此集合:

samantha.AddressMaps = [AddressMap(dateCreated=datetime.now()),
                        AddressMap(dateCreated=datetime.min)]
现在,您可以将这些对象添加到
会话
提交
。有关更多信息,请参阅


顺便说一句,作为参考,在表格的第一个整数列上。

这个答案救了我的命。谢谢你,伙计。