Python 针对Access数据库的pyodbc查询出现“未实现可选功能”错误

Python 针对Access数据库的pyodbc查询出现“未实现可选功能”错误,python,ms-access,select,pyodbc,pypyodbc,Python,Ms Access,Select,Pyodbc,Pypyodbc,对任何能帮忙的人,提前谢谢你。 我正在运行64位windows 10、64位office和64位python 3.7.2 使用pyodbc,我试图执行如下Select语句: "SELECT * FROM EconVars WHERE Year(ValueDate) = 1999" 为此,我的代码如下: existquery = """SELECT * FROM EconVars WHERE Year(ValueDate) = ?""" params = (1999,) curs

对任何能帮忙的人,提前谢谢你。 我正在运行64位windows 10、64位office和64位python 3.7.2

使用pyodbc,我试图执行如下Select语句:

"SELECT * FROM EconVars WHERE Year(ValueDate) = 1999"
为此,我的代码如下:

existquery = """SELECT * FROM EconVars WHERE Year(ValueDate) = ?"""        
params = (1999,)
cursor.execute(existquery,params)
当我运行这个程序时,我得到以下错误 pyodbc.Error:'HYC00','[HYC00][Microsoft][ODBC-Microsoft-Access 驱动程序]未实现可选功能106 SQLBindParameter'

我读过这篇文章,可能是因为pyodbc在传递整数值时遇到了问题,因此我尝试将其转换为float,因为这似乎对某些人有效。因此,我的代码变成:

existquery = """SELECT * FROM EconVars WHERE Year(ValueDate) = ?"""
params = (float(1999),)
cursor.execute(existquery,params)
运行此代码时,程序只需在cursor.execute行上停止,没有错误

我也尝试过使用pyodbc模块,当运行上面完全相同的代码时

existquery = """SELECT * FROM EconVars WHERE Year(ValueDate) = ?"""
params = [1999,]
cursor.execute(existquery,params)
我得到以下错误

OSError: exception: access violation reading 0x0000000000000000
我已经确认游标连接没有问题,因为同一个游标成功地运行了INSERT命令

如果有人有任何想法,我们将不胜感激

更新1 感谢您的回复,我已经降级到4.0.24,但是错误仍然存在,下面的代码仍然会崩溃,没有错误

existquery = """SELECT * FROM EconVars WHERE Year(ValueDate) = ?"""
params = (1999,)
cursor.execute(existquery,params)
existData = cursor.fetchall()
此外,传递字符串也不起作用

existquery = """SELECT * FROM EconVars WHERE Year(ValueDate) = ?"""
params = ('1999',)
cursor.execute(existquery,params)
existData = cursor.fetchall()
但是,我通过传递字符串日期(如

existquery = """SELECT * FROM EconVars WHERE ValueDate = ?"""
params = ('#01/04/1999#',)
cursor.execute(existquery,params)
existData = cursor.fetchall()

然而,很明显,在寻找特定年份的数据点时,这并没有帮助。这也会导致英国/美国的日期问题,因为上述日期实际上被解释为1月4日。

我能够复制您的问题。pyodbc 4.0.25中引入的更改似乎会在Access数据库的查询使用整数参数时引起问题

该问题已在GitHub上报告。同时,降级到pyodbc 4.0.24

使现代化
此问题已在pyodbc 4.0.27中修复。

我能够重现您的问题。pyodbc 4.0.25中引入的更改似乎会在Access数据库的查询使用整数参数时引起问题

该问题已在GitHub上报告。同时,降级到pyodbc 4.0.24

使现代化
这个问题在pyodbc 4.0.27中得到了修复。

构建查询的简单字符串concat不是可以吗?i、 e.existquery=SELECT*FROM EconVars,其中YearValueDate=+str1999这也只是停止代码并退出,没有错误消息pyodbc.version返回什么?您好,它是4.0.25I版,我发现在ValueDate=01/05/1999的EconVars中运行existquery=SELECT*语句不会在cursor.executeexistquery cursor.fetchall上暂停,但游标包含-1行,这是不正确的。行计数是确定游标是否有记录的正确方法吗?构建查询的简单字符串concat不是这样做的吗?i、 e.existquery=SELECT*FROM EconVars,其中YearValueDate=+str1999这也只是停止代码并退出,没有错误消息pyodbc.version返回什么?您好,它是4.0.25I版,我发现在ValueDate=01/05/1999的EconVars中运行existquery=SELECT*语句不会在cursor.executeexistquery cursor.fetchall上暂停,但游标包含-1行,这是不正确的。行计数是否是确定光标是否有记录的正确方法?