SQLAlchemy自引用表不能将0作为主要索引吗?

| 我在SQLAlchemy中遇到了一个非常奇怪的问题。我有一个自我参考(邻接列表关系)的模型。我只是从SQLAlchemy教程中复制了模型(节点)。这是模型的代码:
class Node(Base):
    __tablename__ = \'nodes\'
    id = Column(Integer, primary_key=True)
    parent_id = Column(Integer, ForeignKey(\'nodes.id\'))
    parent = Column(Unicode(50))

    children = relationship(\'Node\',
        cascade=\"all\", #tried to remove this
        backref=backref(\"parent\", remote_side=\'Node.id\'),
        collection_class=attribute_mapped_collection(\'data\'), #tried to remove this as well
    )
我在控制器中重现了该问题,但我也运行了该测试(当然,在完全加载我的环境之后):
parent = Node()
parent.id = 1
parent.parent_id = None
parent.name = \'parent\'
Session.add(parent)

child = Node()
child.id = 20
child.parent_id = 1
child.name = \'child\'
Session.add(child)

Session.commit()
上面的代码可以正常工作(更改已成功提交并反映在数据库中)。 当我将“ 2”节点的id更改为0(并且将“ 3”的parent_id相应地更改为0)时,就会出现问题。然后,我得到以下异常:
......
File \"C:\\Python26\\Lib\\site-packages\\MySQLdb\\connections.py\", line 36, in defaulterrorhandler
raise errorclass, errorvalue
sqlalchemy.exc.IntegrityError: (IntegrityError) (1452, \'Cannot add or update a child row: a
foreign key constraint fails (`db`.`nodes`, CONSTRAINT `nodes_ibfk_1` FOREIGN KEY
(`parent_id`) REFERENCES `nodes` (`id`))\') \'INSERT INTO nodes (id, parent_id, name) VALUES 
(%s, %s, %s)\' (20, 0, \'child\')
令人惊讶的是,将此值(
node
\的ID和the3ѭ\的parent_id)更改为0(-5、1和150)以外的任何值都会使错误消失。 我是否缺少明显的东西?不能为自引用整数ID列分配0吗? 谢谢!     
已邀请:
当您显式传递
NULL
0
时,MySQL使用生成的ID。将
autoincrement=False
作为参数传递给
Column
到禁用的
AUTO_INCREMENT
。     

要回复问题请先登录注册