Python 3.x 为什么引用完整性约束在我的代码中不起作用?我该如何解决这个问题?

Python 3.x 为什么引用完整性约束在我的代码中不起作用?我该如何解决这个问题?,python-3.x,sqlite,jupyter-notebook,Python 3.x,Sqlite,Jupyter Notebook,我已将dno作为departmentdum1表中的主键,而sigdum14中的dno引用了departmentdum1表dno属性。我在执行此代码时应该会得到错误,因为我试图将dno值设置为5,在sigdum14表中应该会显示错误,但不会显示 from tkinter import * import sqlite3 conn = sqlite3.connect('Form.db') print("connected") conn.execute('create table department

我已将dno作为departmentdum1表中的主键,而sigdum14中的dno引用了departmentdum1表dno属性。我在执行此代码时应该会得到错误,因为我试图将dno值设置为5,在sigdum14表中应该会显示错误,但不会显示

from tkinter import *
import sqlite3

conn = sqlite3.connect('Form.db')
print("connected")
conn.execute('create table departmentdum1 (d_name varchar(20),dno int 
primary key)') 
print("created");
conn.execute('insert into departmentdum1 values("computer science",1)')
print("execute");
conn.execute('insert into departmentdum1 values("Information 
science",2)')
print("execute");

conn.execute('create table sigdum14 ( y_name varchar(20),dno integer, 
foreign key(dno) REFERENCES departmentdum1(dno))') ;
print("created");
conn.execute('insert into sigdum14 values("kim",5)')
print("execute");



print("desc done");
conn.commit();
连接的 创建 执行 执行 创建 执行 描述完成


输出错误

默认情况下,sqlite不强制外键约束。但是,您可以通过添加以下行来更改此行为:

conn.execute("PRAGMA foreign_keys = 1")
刚刚打开连接

有关更多详细信息,请参阅文档的第页:

为了在SQLite中使用外键约束,必须在编译库时既不定义
SQLite\u OMIT\u foreign\u key
也不定义
SQLite\u OMIT\u TRIGGER
。[……]

假设库是在启用外键约束的情况下编译的,则应用程序仍必须在运行时使用
PRAGMA foreign_keys
命令启用库


您的代码不会验证用于创建外键约束的SQL命令是否实际成功。可能是失败了。如果使用显示结构和约束的SQLite GUI浏览数据库文件,会发生什么情况?