Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在sqlite3 python中创建外键_Python_Sqlite - Fatal编程技术网

如何在sqlite3 python中创建外键

如何在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

由于未知的原因,我无法让我的程序使用外键。我读过其他与此相关的问题,但找不到有效的答案。我尝试了PRAGMA-foreign\u-keys=ON,但却得到了“foreign\u-keys”的语法错误。我也试着删除它并再次运行程序,结果却出现了一个错误,说我试图创建的列不存在

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”)
)。看看这个答案: