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

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

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

  1. import sqlite3
  2. conn = sqlite3.connect('finances.db')
  3. c = conn.cursor()
  4. c.execute("CREATE TABLE IF NOT EXISTS orders (ID INT, DATE TEXT, CHECK TEXT, AMOUNT REAL,DESC TEXT)")
  5. conn.commit()
  6. conn.close()

错误:

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

ktca8awb1#

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

  1. CREATE TABLE IF NOT EXISTS orders (
  2. ID INT,
  3. DATE TEXT,
  4. CHK TEXT,
  5. AMOUNT REAL,
  6. DESC TEXT
  7. );

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

  1. CREATE TABLE IF NOT EXISTS orders (
  2. ID INT,
  3. ORDER_DATE TEXT,
  4. CHK TEXT,
  5. AMOUNT REAL,
  6. DESCR TEXT
  7. );

参考:sqlite关键字。

展开查看全部

相关问题