为什么我会收到 Sqlite3 的数据类型 TEXT 错误?

Why do I get datatype TEXT error for Sqlite3?

我正在审查其他人在 Python 中使用 Sqlite3 创建 table 的代码,我认为我的代码实际上匹配,但我一直收到错误。有人可以帮助我了解我哪里出错了吗?谢谢!

import sqlite3

conn = sqlite3.connect('finances.db')

c = conn.cursor()

c.execute("CREATE TABLE IF NOT EXISTS orders (ID INT, DATE TEXT, CHECK TEXT, AMOUNT REAL,DESC TEXT)")

conn.commit()
conn.close()

错误:

line 17, in <module>
    c.execute("CREATE TABLE IF NOT EXISTS orders (ID INT, DATE TEXT, CHECK TEXT, AMOUNT REAL,DESC TEXT)")
sqlite3.OperationalError: near "TEXT": syntax error

CHECK 是 SQLite 中的保留字。您需要用双引号将其括起来,或者最好将列名更改为其他名称,这样您以后在编写查询时就无需担心这一点。

CREATE TABLE IF NOT EXISTS orders (
    ID INT, 
    DATE TEXT, 
    CHK TEXT, 
    AMOUNT REAL,
    DESC TEXT
);

我也反对使用 DATEDESC 这样的列名;尽管 SQLite 允许这样做,但它们显然对应于 SQL 关键字,这使得它们本质上是模棱两可的:

CREATE TABLE IF NOT EXISTS orders (
    ID INT, 
    ORDER_DATE TEXT, 
    CHK TEXT, 
    AMOUNT REAL,
    DESCR TEXT
);

参考:SQLite keywords.