Python SQL语法Sqlite3中可能有什么错误?
这是我的schema.sqlPython SQL语法Sqlite3中可能有什么错误?,python,sql,sqlite,Python,Sql,Sqlite,这是我的schema.sql DROP TABLE IF EXISTS Usuarios; DROP TABLE IF EXISTS Alunos; DROP TABLE IF EXISTS Cargo; CREATE TABLE Cargo ( Nome_Cargo TEXT UNIQUE NOT NULL, CargoID INTEGER NOT NULL PRIMARY KEY UNIQUE ); CREATE TABLE Usuarios ( Id_Usuario IN
DROP TABLE IF EXISTS Usuarios;
DROP TABLE IF EXISTS Alunos;
DROP TABLE IF EXISTS Cargo;
CREATE TABLE Cargo (
Nome_Cargo TEXT UNIQUE NOT NULL,
CargoID INTEGER NOT NULL PRIMARY KEY UNIQUE
);
CREATE TABLE Usuarios (
Id_Usuario INTEGER PRIMARY KEY AUTOINCREMENT,
Nome TEXT UNIQUE NOT NULL,
Cargo TEXT,
CPF TEXT UNIQUE,
Is_admin INTEGER,
User_login TEXT UNIQUE NOT NULL,
Senha TEXT NOT NULL,
FOREIGN KEY (CargoID) REFERENCES Cargo(CargoID)
);
CREATE TABLE Alunos (
Id_Aluno INTEGER PRIMARY KEY AUTOINCREMENT,
Nome_Completo TEXT NOT NULL,
RA TEXT UNIQUE,
Data_Nascimento TEXT,
RM INTEGER UNIQUE,
Data_Alteracao NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (Criado_Por) REFERENCES Usuarios(Id_Usuario)
);
我收到以下错误:
sqlite3.OperationalError:外键定义中的未知列“CargoID”
我正在python应用程序中使用sqlite3和Flask
我也尝试过使用,但收到了相同的错误:
帮助:外键定义中的未知列“CargoID”
我也阅读了文档和一些指南,但没有成功
这里可能有什么语法错误?当您声明外键时,需要首先定义列。也就是说,外键声明实际上描述了关于现有列的一些内容:
CREATE TABLE Usuarios (
Id_Usuario INTEGER PRIMARY KEY AUTOINCREMENT,
Nome TEXT UNIQUE NOT NULL,
CargoId INTEGER,
CPF TEXT UNIQUE,
Is_admin INTEGER,
User_login TEXT UNIQUE NOT NULL,
Senha TEXT NOT NULL,
FOREIGN KEY (CargoID) REFERENCES Cargo(CargoID)
);
请注意,我将Cargo
替换为CargoID
。大概,您可以使用外键和Cargo
表查找Cargo