小编moz*_*boz的帖子

sqlalchemy中同一个表的外键

我有一个 MySQL 表,在 sqlalchemy 中定义,结构如下:

class User(Base):
    __tablename__ = 'user'
    __table_args__ = {'mysql_charset': 'utf8', 'mysql_engine': 'InnoDB'}
    id = Column(Integer, primary_key=True)
    handle = Column(String(250), nullable=False)
    owned = Column(Boolean(), default=False)
    owner_id = Column(Integer, ForeignKey("user.id"), nullable=True, default=null )
    current_price = Column(Integer, nullable=False, default=1)
    balance = Column(Integer, nullable=False, default=0)
Run Code Online (Sandbox Code Playgroud)

我想要一个关系,以便 owner_id 可以为空,或者如果它被设置,它必须引用同一个表中的有效 user.id。

我不太了解 sqlalchemy 关系的东西,无法做到这一点。此页面顶部的特殊内容http://docs.sqlalchemy.org/en/latest/orm/relationship_persistence.html似乎表明这是可能的,但我无法弄清楚。

我希望然后能够添加用户,如:

u1 = User(handle="bob")
u2 = User(handle="jim", owner=u1)
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

我应该补充一点,sqlalchemy 使用正确的 FOREIGN KEY 约束执行 CREATE TABLE 没有问题,我可以手动将数据插入到遵守规则的表中,因为我希望它们在 MySQL 中,它只使用失败的 sqlalchemy 模型。

编辑:已解决

owner_id 上的“default=null”由于某种原因导致了问题。有用的文档在这里:http : …

python mysql sqlalchemy

6
推荐指数
1
解决办法
5772
查看次数

标签 统计

mysql ×1

python ×1

sqlalchemy ×1