在Python中使用Sqlite 3中的外键时出现语法错误。

时间:2016-07-01 11:30:22

标签: python sqlite

我有一个数据库模式文件,我在Flask模块中读到。

PRAGMA foreign_keys = 1;

drop table if exists user;
create table user(uid integer primary key autoincrement, 
username text not null,
password text not null,
email text not null);

drop table if exists asset;
create table asset(aid integer primary key autoincrement,
assetname text not null,
releasedate text,
FOREIGN_KEY(owner) REFERENCES user);

当我删除外键字段时,它工作正常。

错误追踪:

  File "main.py", line 75, in <module>
    create_table()
  File "main.py", line 30, in create_table
    conn.cursor().executescript(f.read())
sqlite3.OperationalError: near "(": syntax error

我可以发布使用此脚本的方法,但我不认为问题就在那里。

2 个答案:

答案 0 :(得分:1)

由于@soon指出您在FOREIGN KEY关键字上存在语法错误,因此您还应该定义列名称(所有者)。

drop table if exists asset; create table asset(aid integer primary key autoincrement, assetname text not null, releasedate text, owner integer, FOREIGN KEY(owner) REFERENCES user);

答案 1 :(得分:0)

您应该用空格替换FOREIGNKEY之间的下划线。下图显示了约束syntax

enter image description here

foreign-key-clause语法为:

enter image description here