sqlite3.OperationalError:near" INTEGER":语法错误

时间:2017-09-19 17:46:11

标签: python sqlite

我想学习如何使用python构建sqlite,按照教程后,我一直发现这个错误,我在stackoverflow上搜索但是经过几次检查后我仍然无法弄清楚发生了什么... < / p>

这是我的代码:

import sqlite3
import csv

conn = sqlite3.connect("member_2.db")
cursor = conn.cursor()

# build db table
 sql_command="""
    CREATE TABLE member (
    id PRIMARY KEY INTEGER AUTOINCREMENT,
    name TEXT NOT NULL,
    gender CHAR(1),
    score INTEGER,
    team TEXT
    );

    CREATE TABLE pick_history (
      member_id INTEGER,
      pick_time DATE DEFAULT (datatime('now', 'localtime')),
      FOREIGN KEY(member_id) REFERENCES member(id)
    );
 """

cursor.execute(sql_command)

请帮忙〜谢谢!

1 个答案:

答案 0 :(得分:2)

在将其设置为主键之前,您需要指定id的数据类型。例如,以下内容将起作用:

sql_command="""
    CREATE TABLE member (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    gender CHAR(1),
    score INTEGER,
    team TEXT
    );"""

感谢@kindall链接到the docs,清楚地表明在列约束之前指定了列类型。

另外,感谢@PRMoureu指出,一旦你修复了这个错误,你就会得到警告:

Warning: You can only execute one statement at a time.

因此将查询拆分为两个语句并分别创建表。