Python SQL语法Sqlite3中可能有什么错误?

Python 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

这是我的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 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