python - 如何在 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
解决方案
在将它们用作外键之前,您需要在表中创建字段。
由于您没有User
向表中添加字段,因此出现错误:
外键定义中的未知列“用户”
要修复错误,请添加User
到您的表定义
c.execute("""CREATE TABLE IF NOT EXISTS classes (
ClassID PRIMARY KEY,
User text,
FOREIGN KEY (User) REFERENCES users(UserID)))""")
但是,我会质疑设计。该表classes
只能关联每个类的一个用户。那是你想做的吗?
推荐阅读
- javascript - 为什么 Axios 发布错误的数据?
- r - 如何将包含正则表达式的代码包装到函数中
- r - 在 Google Colab 笔记本中运行 R 内核时,如何将数据框导出为 .csv 文件?
- asp.net - 如何在 ASP.NET MVC 和实体框架中制作预填充表单
- cobol - Cobol 在不应该时将多行视为一行
- r - 如何在 R 中创建汇总的人口统计表
- google-api - Google NLP API 类别的稳定性如何?
- python - 我的函数缺少 1 个必需的位置参数:“请求”
- python - 用python列出所有ESXI的vm
- c++ - 如何为 c++ PBDS 制作自定义计算函数?