【发布时间】:2018-07-27 15:28:55
【问题描述】:
简要介绍:
这里的想法是从 csv 文件中读取一些数据,并将其用作我的 sql 查询的NOT IN 部分中的列表。我正在使用下面的代码连接到数据库(.mdb)。
注意LP 是我要传递的元组/列表,IRdb 是数据库的路径
constr = r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=' + IRdb
conn = pyodbc.connect(constr, autocommit=True)
cur = conn.cursor()
IRsql='''SELECT IRRPResults.RRPName, IRRPResults.PointName, IRRPResults.RiskPerTime FROM IRRPResults
WHERE IRRPResults.PointName<>?
AND IRRPResults.RRPName NOT LIKE ? AND IRRPResults.PointName NOT IN ?'''
cur.execute(IRsql,('Total',r'Conn%',LP))
问题:
除了执行语句(在我添加NOT IN 部分之前确实有效)之外,一切都很好。我尝试将LP 作为字符串、元组和列表传递,但似乎没有任何效果。我收到以下错误
pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Microsoft Access Driver] In operator without () in query expression 'IRRPResults.PointName<>Pa_RaM000 AND IRRPResults.RRPName NOT LIKE Pa_RaM001 AND IRRPResults.PointName NOT IN Pa_RaM002'. (-3100) (SQLExecDirectW)")
任何帮助将不胜感激。
【问题讨论】:
标签: python sql ms-access pyodbc