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

问题描述 投票:0回答:1

找不到此错字或什么东西-每次遇到此错误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
sql sqlite pycharm python3.8.1
1个回答
0
投票

ATTACH DATABASE temp.db AS check;

checkreserved word in SQLite,与大多数(如果不是全部)其他数据库一样。在语法中,定义check constraints when creating tables起作用。

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

ATTACH DATABASE temp.db AS dbcheck;
© www.soinside.com 2019 - 2024. All rights reserved.