为什么我得到sqlite3的数据类型文本错误?

ubby3x7f  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(277)

我正在查看其他人在python中使用sqlite3创建表的代码,我认为我的代码实际上是匹配的,但是我不断地得到一个错误。有人能帮我理解我哪里出错了吗?谢谢您!

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
ktca8awb

ktca8awb1#

CHECK 是sqlite中的保留字。您需要用双引号将其括起来,或者更好地将列的名称改为其他名称,这样以后编写查询时就不必担心这个问题。

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

我还主张反对列名称,如 DATE 以及 DESC ; 尽管sqlite允许这样做,但它们显然与sql关键字相对应,这使得它们在本质上是不明确的:

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

参考:sqlite关键字。

相关问题