如何在sqlite3 python中创建外键
由于未知的原因,我无法让我的程序使用外键。我读过其他与此相关的问题,但找不到有效的答案。我尝试了PRAGMA-foreign\u-keys=ON,但却得到了“foreign\u-keys”的语法错误。我也试着删除它并再次运行程序,结果却出现了一个错误,说我试图创建的列不存在如何在sqlite3 python中创建外键,python,sqlite,Python,Sqlite,由于未知的原因,我无法让我的程序使用外键。我读过其他与此相关的问题,但找不到有效的答案。我尝试了PRAGMA-foreign\u-keys=ON,但却得到了“foreign\u-keys”的语法错误。我也试着删除它并再次运行程序,结果却出现了一个错误,说我试图创建的列不存在 import sqlite3 import os import random from tkinter import * import uuid PRAGMA foreign_keys = ON conn = sqlite
import sqlite3
import os
import random
from tkinter import *
import uuid
PRAGMA foreign_keys = ON
conn = sqlite3.connect('MyComputerScience.db')
c = conn.cursor()
c.execute("""CREATE TABLE IF NOT EXISTS users (
UserID text PRIMARY KEY,
FName text,
SName text,
username text,
password varchar,
userType text)""")
c.execute("""CREATE TABLE IF NOT EXISTS classes (
ClassID PRIMARY KEY,
FOREIGN KEY (User) REFERENCES users(UserID)))""")
FOREIGN KEY (User) REFERENCES users(UserID)))""")
sqlite3.OperationalError: unknown column "User" in foreign key definition
这是正确的语法,但这样可以将主键设置为外键。可能您想使用另一个字段。在将字段用作外键之前,需要在表中创建字段 由于未向表中添加字段
用户
,因此出现错误:
外键定义中的未知列“User”
c.execute("""CREATE TABLE IF NOT EXISTS classes (
ClassID PRIMARY KEY,
User text,
FOREIGN KEY (User) REFERENCES users(UserID)))""")
要修复错误,请将User
添加到表定义中
c.execute("""CREATE TABLE IF NOT EXISTS classes (
ClassID PRIMARY KEY,
User text,
FOREIGN KEY (User) REFERENCES users(UserID)))""")
然而,我会质疑这个设计。表
classes
将只能为每个类关联一个用户。这就是您想要做的吗?PRAGMA行不应该出现在Python代码中,因为它不是有效的Python(因此是SyntaxError)。相反,在创建连接后立即执行该行(conn.execute(“PRAGMA foreign\u keys=on”)
)。看看这个答案: