python - sqlite3.OperationalError:靠近“........”:语法错误
问题描述
Windows 7的
蟒蛇2.7
姜戈 1.11
我使用 Django 开发了一个网站。在后端,我有一个有 2 个表的 sqlite 数据库。一个表格接受用户提交的表单,另一个用于比较。用户提交表单A后,将保存在表catalog_fw下,并将catalog_fw.ODM和catalog_fw.project_name与表catalog_fw_instance中的进行比较。如果某行catalog_fw.ODM 和catalog_fw.project 的内容完全相同,catalog_fw_instance.level 将与A 结合传递给一个.exe 以生成一个txtx 文件。
但是,这行出现错误:c.execute("catalog_fw_instance.level,......
`当我运行这个python文件时:</p>
sqlite3.OperationalError: near "catalog_fw_instance": syntax error
获取 sqlite 数据、比较并传递给 .exe 的代码在这里:
def when_call_exe():
with sqlite3.connect('db.sqlite3') as con:
c = con.cursor()
#c.execute("catalog_fw_instance.level, SELECT catalog_fw.ODM_name, catalog_fw.project_name, catalog_fw.UAP, catalog_fw.NAP, catalog_fw.LAP, catalog_fw.num_address FROM catalog_fw INNER JOIN catalog_fw_instance ON catalog_fw.ODM_name=catalog_fw_instance.ODM_name AND catalog_fw.project_name=catalog_fw_instance.project_name")
sql = ("SELECT catalog_fw.ODM_name, catalog_fw.project_name, catalog_fw.UAP, catalog_fw.NAP, catalog_fw.LAP, " +
"catalog_fw.num_address, catalog_fw_instance.level " +
"FROM catalog_fw catalog_fw" +
"INNER JOIN catalog_fw_instance catalog_fw_instanc" +
" ON catalog_fw.ODM_name = catalog_fwi.ODM_name AND catalog_fw.project_name = catalog_fw_instance.project_name")
c.execute(sql)
print '1:', c.fetchone()
parameter = c.fetchone()
print '2', parameter
#pass to exe
args = ['.//exe//Test.exe', parameter[0], parameter[1]+parameter[2], parameter[3], parameter[4], parameter[5], parameter[6]]
output = my_check_output(args)
if 'SUCCESS' in output:
filename = output[28:-1]
else:
filename = output[8:-1]
downloadlink = os.path.join('/exe', '%s' % filename)
#save link to sqlite db
c.execute('''UPDATE catalog_fw SET download = %s WHERE
ODM_Name=parameter[1] AND project_Name=parameter[2] ''' % downloadlink)
这里显示了 sqlite 数据库中的 2 个表
解决方案
据我所知,cursor#execute()
在 Python 中调用时,我们应该传递一个包含要运行的查询的字符串。看起来您正在传递一个选择参数,然后是一个查询,所有这些都作为一个字符串。考虑以下版本:
c = con.cursor()
sql = ("SELECT cf.ODM_name, cf.project_name, cf.UAP, cf.NAP, cf.LAP, " +
"cf.num_address, cfi.level " +
"FROM catalog_fw cf " +
"INNER JOIN catalog_fw_instance cfi " +
" ON cf.ODM_name = cfi.ODM_name AND cf.project_name = cfi.project_name")
c.execute(sql)
print(c.fetchone())
parameter = c.fetchone()
推荐阅读
- c++ - 如何修复“一些带有模板的结构的初始化程序太多”
- php - 如何输出 PHP 数组函数?
- javascript - Waiting for promise to fulfill in Node.js
- vb.net - Authed.io check if user expired or not |VB|
- python-3.x - 如何在jupyter笔记本中绘制一张又一张的图
- node.js - 快递:我该如何处理?(关于`路线`)
- java - 如何获取 json 的索引并在 pojo 类中使用它
- reactjs - importing image with es6 import or require during runtime
- ios - 当用户快速滚动表格视图时如何隐藏和取消隐藏导航栏?
- react-native - Realm in React Native - TypeError while not using JS Debugging