为什么我会收到 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
);
我也反对使用 DATE
和 DESC
这样的列名;尽管 SQLite 允许这样做,但它们显然对应于 SQL 关键字,这使得它们本质上是模棱两可的:
CREATE TABLE IF NOT EXISTS orders (
ID INT,
ORDER_DATE TEXT,
CHK TEXT,
AMOUNT REAL,
DESCR TEXT
);
参考:SQLite keywords.
我正在审查其他人在 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
);
我也反对使用 DATE
和 DESC
这样的列名;尽管 SQLite 允许这样做,但它们显然对应于 SQL 关键字,这使得它们本质上是模棱两可的:
CREATE TABLE IF NOT EXISTS orders (
ID INT,
ORDER_DATE TEXT,
CHK TEXT,
AMOUNT REAL,
DESCR TEXT
);
参考:SQLite keywords.