Python peewee创建表时外键约束的问题
我有以下sqlite数据库表:Python peewee创建表时外键约束的问题,python,sqlite,foreign-keys,peewee,Python,Sqlite,Foreign Keys,Peewee,我有以下sqlite数据库表: CREATE TABLE IF NOT EXISTS Channel ( channel_id integer UNIQUE NOT NULL, channel_name text UNIQUE NOT NULL, PRIMARY KEY (channel_id) ); CREATE TABLE IF NOT EXISTS User_banned ( user_id integer NOT NULL, login_name
CREATE TABLE IF NOT EXISTS Channel (
channel_id integer UNIQUE NOT NULL,
channel_name text UNIQUE NOT NULL,
PRIMARY KEY (channel_id)
);
CREATE TABLE IF NOT EXISTS User_banned (
user_id integer NOT NULL,
login_name text NOT NULL,
channel_id integer NOT NULL,
ban_timestamp real NOT NULL,
PRIMARY KEY (user_id, channel_id, ban_timestamp),
FOREIGN KEY (channel_id) REFERENCES channel (channel_id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS Message_deleted (
user_id integer NOT NULL,
channel_id integer NOT NULL,
ban_timestamp real NOT NULL,
message_timestamp real NOT NULL,
message text NOT NULL,
PRIMARY KEY (user_id, message_timestamp),
FOREIGN KEY (user_id, channel_id, ban_timestamp) REFERENCES User_banned (user_id, channel_id, ban_timestamp) ON DELETE CASCADE
);
我用pwiz生成了peewee模型,在所有外键的_delete='CASCADE'参数上添加了,因为pwiz不生成它,并用pragmas连接到数据库'foreign':1
我有以下代码供测试:
database.connect()
database.create_tables([Channel, UserBanned, MessageDeleted])
Channel.create(channel_id=1111, channel_name="channel1")
UserBanned.create(ban_timestamp=4551, login_name="d", channel=1111, user_id=511)
MessageDeleted.create(ban_timestamp=4551, message="message", message_timestamp=4511, channel=1111, user=511)
print(Channel.delete().execute())
database.close()
当我通过使用sqlitebrowser导入sql文件来创建表时,我没有遇到问题,但是如果表是由peewee创建的,我会遇到以下错误:peewee.OperationalError:外键不匹配-“Message\u deleted”引用“User\u banked”