【问题标题】:Why do I get datatype TEXT error for Sqlite3?为什么我会收到 Sqlite3 的数据类型 TEXT 错误?
【发布时间】:2020-06-24 21:48:06
【问题描述】:

我正在查看其他人使用 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

【问题讨论】:

    标签: python sql database sqlite create-table


    【解决方案1】:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-04
      • 1970-01-01
      • 1970-01-01
      • 2022-06-29
      • 2013-03-24
      • 2019-11-23
      • 1970-01-01
      相关资源
      最近更新 更多