sqlite3.OperationalError:“-”附近:语法错误

时间:2020-04-11 17:35:49

标签: sql sqlite pycharm python-3.8

找不到错别字在哪里-每次遇到此错误line 33, in <module> c_a.execute('ATTACH DATABASE temp.db AS check') sqlite3.OperationalError: near "check": syntax error

由于一个查询,我试图将数据库temp.db附加到prime.db上。这有助于我查找重复的记录(检查login(两个数据库中的一列))

import sqlite3

db_a = sqlite3.connect('prime.db')
c_a = db_a.cursor()

db_b = sqlite3.connect('temp.db')
c_b = db_b.cursor()

c_a.execute('ATTACH DATABASE temp.db AS check')
c_a.execute('SELECT * FROM check.user_info WHERE user_info.login = user.login')
db_a.commit()
c_a.fetchall()

还尝试了另一个版本:

attachDatabaseSQL = "ATTACH DATABASE temp.db AS check"
dbSpec = ("temp.db",)
c_a.execute(attachDatabaseSQL, dbSpec)
c_a.execute('SELECT * FROM check.user_info WHERE user_info.login = user.login')
db_a.commit()
c_a.fetchall()

它发现了错误: line 41, in <module> c_a.execute(attachDatabaseSQL, dbSpec) sqlite3.OperationalError: near "check": syntax error

使用Python 3.8.1和SQLite3。

更新: 更改为:

c_a.execute('ATTACH DATABASE temp.db AS dbcheck')
c_a.execute('SELECT * FROM check.user_info WHERE user_info.login = user.login')
db_a.commit()
c_a.fetchall()

现在的错误是:

c_a.execute('ATTACH DATABASE temp.db AS dbcheck')
sqlite3.OperationalError: no such column: temp.db

1 个答案:

答案 0 :(得分:0)

ATTACH DATABASE temp.db AS check;

与大多数(如果不是全部)其他数据库一样,

checkreserved word in SQLite。在语法中,定义check constraints when creating tables起作用。

请考虑使用与语言关键字不冲突的另一个名称。例如:

ATTACH DATABASE temp.db AS dbcheck;