我试图使用PYODBC在Access数据库中执行SQL查询,得到以下错误:
pyodbc.Error: ('07002', '[07002] [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. (-3010) (SQLExecDirectW)')
问题是我没有使用任何其他参数。代码如下:
access_con_string = r"Driver={};Dbq={};".format(driver, base)
cnn = pyodbc.connect(access_con_string)
db_cursor = cnn.cursor()
expression = """SELECT F_ARODES.ARODES_INT_NUM, F_ARODES.TEMP_ADRESS_FOREST,F_AROD_LAND_USE.ARODES_INT_NUM, F_ARODES.ARODES_TYP_CD
FROM F_ARODES LEFT JOIN F_AROD_LAND_USE ON F_ARODES.ARODES_INT_NUM = F_AROD_LAND_USE.ARODES_INT_NUM
WHERE (((F_AROD_LAND_USE.ARODES_INT_NUM) Is Null) AND ((F_ARODES.ARODES_TYP_CD)="wydziel") AND ((F_ARODES.TEMP_ACT_ADRESS)=True));"""
db_cursor.execute(expression)
查询本身,如果在msaccess内部使用,效果很好。另外,连接是可以的,因为其他查询都可以正确执行。 我做错什么了?在
这种查询中的常量是有问题的-你永远不知道布尔值、字符串等的确切底层语法-即使它在MS Access中工作,它在你使用的中介库中也可能是不同的。在
最安全的方法是提取它们作为参数:
我也遇到了类似的问题,我试图用pyodbc执行更新。在Access中执行时,查询运行良好,使用应用程序时也一样(它允许从应用程序内部进行一些查询)。但是在python中运行pyodbc时,相同的文本会抛出错误。我确定问题是双引号(OP的查询也有一组双引号)。当我用单引号替换它们时,查询开始工作了。在
这不起作用:
这样做可以:
^{pr2}$相关问题 更多 >
编程相关推荐