繁体   English   中英

jupyter notebook 中 sqlite 的语法错误

[英]syntax error on sqlite in jupyter notebook

我正在使用 Jupyter notebook 来运行我的 sqlite 数据库。 我是 sqlite 的新手,想从学校做一个测试。 但是当我运行这些命令时,它给我语法错误,但我知道我的命令是正确的。 让我展示一下 jupyter notebook 中的单元格。 第一个细胞。

%load_ext sql
# Load SQLite database
%sql sqlite:///movies.db

第二个细胞:

%%sql

SELECT *
FROM movies
LIMIT 2

到目前为止一切都运行良好,但是当我调用第三个单元格时,它给出了语法错误:

# create new table, cast1NF
%%sql 
DROP TABLE IF EXISTS cast_1NF;
CREATE TABLE cast_1NF (
    id INTEGER AUTOINCREMENT, 
    imdb_id VARCHAR, 
    cast VARCHAR, 
    PRIMARY KEY (id, imdb_id)
);

Jupyter 笔记本说DROP TABLE上存在语法错误,然后当我删除该行时,它说id INTEGER AUTOINCREMENT上存在语法错误。 实在是太麻烦了。 需要帮忙。

您不能使用关键字AUTOINCREMENT除非您将列定义为INTEGER PRIMARY KEY (它自己只定义要自动增加的列)。

因此,要么将列id定义为主键,要么将imdb_id定义为唯一的:

CREATE TABLE cast_1NF (
    id INTEGER PRIMARY KEY AUTOINCREMENT, 
    imdb_id TEXT UNIQUE, 
    cast TEXT
);

请参阅演示

这样就不需要将idimdb_id的组合定义为唯一的。

或者,如果您实际上不需要id ,您可以将imdb_id定义为主键:

CREATE TABLE cast_1NF (
    imdb_id TEXT PRIMARY KEY, 
    cast TEXT
);

请参阅演示

SQLite中没有VARCHAR数据类型,所以我改为TEXT

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM