当我试图重新初始化我的数据库时,我总是得到一个IntegrityError:
sqlalchemy.exc.IntegrityError: (IntegrityError) (1217, 'Cannot delete or update a parent row: a foreign key constraint fails') '\nDROP TABLE users' ()
在init_db脚本中,我有:
^{pr2}$它可以让我删除Users表,它是:
class User(Base):
__tablename__='users'
__table_args__={
'mysql_engine':'InnoDB',
'mysql_charset':'utf8',
}
user_id = Column(Integer, primary_key=True, unique=True)
username = Column(VARCHAR(16), primary_key=True, unique=True)
name = Column(VARCHAR(16))
password = Column(VARCHAR(20))
email = Column(VARCHAR(30))
creation = Column(DateTime, default = datetime.datetime.now)
def __init__(self, un, name, pw, email):
self.username = un
self.name = name
self.email = email
self.password = pw
我认为有两个可能的原因:
users
表有一个ForeignKey
,但它没有映射到任何{drop_all
操作期间不会被删除。在addresses
表有一个指向users
表的ForeignKey
,但是您的模型Address
(或者正确地说,是Address
的映射器)没有配置这个外键,因此在drop_all
sqlalchemy
期间,无法知道该表应该在被引用的表之前删除(users
)。在相关问题 更多 >
编程相关推荐