找不到错别字在哪里-每次遇到此错误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
答案 0 :(得分:0)
与大多数(如果不是全部)其他数据库一样,
ATTACH DATABASE temp.db AS check;
check
是reserved word in SQLite。在语法中,定义check constraints when creating tables起作用。
请考虑使用与语言关键字不冲突的另一个名称。例如:
ATTACH DATABASE temp.db AS dbcheck;