这是我的代码:
conn.execute("""
CREATE TABLE IF NOT EXISTS Blockchain_transactions(
hash_of_previous_block CHAR PRIMARY KEY DEFAULT NULL,
id INTEGER DEFAULT NULL,
transaction CHAR DEFAULT NULL
);""")
它会生成语法错误
sqlite3.OperationalError: near "transaction": syntax error
备注:这在我的代码中较早出现,并且不会生成相同的错误
conn.execute("""
CREATE TABLE IF NOT EXISTS Blockchain_blocks (
hash_of_previous_block CHAR PRIMARY KEY DEFAULT NULL,
proof_of_work INTEGER DEFAULT NULL,
difficulty INTEGER DEFAULT NULL
);""")
答案 0 :(得分:4)
transaction
是sqlite keyword。
将列名更改为不同的名称,它将起作用。
避免为列名保留关键字,或者像这样转义它们:
conn.execute("""
CREATE TABLE IF NOT EXISTS Blockchain_transactions(
hash_of_previous_block CHAR PRIMARY KEY DEFAULT NULL,
id INTEGER DEFAULT NULL,
`transaction` CHAR DEFAULT NULL
);""")
可以在链接关键字页面中找到转义/引用关键字的其他可能性。