首页 > 解决方案 > 如何在 sqlite3 python 中创建外键

问题描述

由于某些未知原因,我无法让我的程序使用外键。我已阅读与此相关的其他问题,但找不到有效的答案。我尝试了 PRAGMA foreign_keys = ON,但我得到了“foreign_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

标签: pythonsqlite

解决方案


在将它们用作外键之前,您需要在表中创建字段。

由于您没有User向表中添加字段,因此出现错误:

外键定义中的未知列“用户”

要修复错误,请添加User到您的表定义

c.execute("""CREATE TABLE IF NOT EXISTS classes (
            ClassID PRIMARY KEY,
            User text,
            FOREIGN KEY (User) REFERENCES users(UserID)))""")

但是,我会质疑设计。该表classes只能关联每个类的一个用户。那是你想做的吗?


推荐阅读