gpt4 book ai didi

python - 在 Python ODBC 中使用 Microsoft Access SQL 运算符

转载 作者:太空宇宙 更新时间:2023-11-04 11:02:42 26 4
gpt4 key购买 nike

简短版:当我尝试通过 ODBC 使用 Access 的 DatePart 函数时,无法解析。

更长的版本:

我有一个 Microsoft Access 查询,它返回带有时间戳和分数的行。我想按排序,然后按分数排序 - 实际上是当天的高分表。

为了更好的功能,我使用DatePart 函数从时间戳中提取年、月、日,然后ORDER BY 然后是Score .

在 Microsoft Access 中,查询工作得很好。

但是,当我使用 pyodbc Access 相同的查询时,ODBC 驱动程序被 DatePart 函数难住了,并认为它是缺少参数的名称。

令我惊讶的是,即使我隐藏了 DatePart 函数,通过创建一个新的 HighScore 查询,然后 SELECT * FROM HighScore,它仍然提示它不能' 找到参数。显然,查询的 SQL 在此过程中很晚才被解析。

我的问题是:

  • 如何解析 SQL 中的 DatePart 函数以允许 Access 运行它,或者
  • 通过 ODBC 按时间戳的日期部分排序的正确方法是什么?

添加了附加信息:

看起来有点矫枉过正,但这里有一些代码:

import pyodbc
access_db_path = r"<ellided>"
connection_string = 'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ='+access_db_path
connection = pyodbc.connect(connection_string, autocommit = True)

print "First query"
connection.cursor().execute('SELECT ScoreTime FROM SplitExtendedP1')
print "Worked"

print "Second query"
print connection.cursor().execute('SELECT DatePart("yyyy",ScoreTime) FROM SplitExtendedP1')
print "Doesn't get here."

结果如下:

First query
Worked
Second query
Traceback (most recent call last):
File "<ellided>.py", line 16, in <module>
print connection.cursor().execute('SELECT DatePart("yyyy", ScoreTime) FROM SplitExtendedP1')
pyodbc.Error: ('07002', '[07002] [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. (-3010) (SQLExecDirectW)')

最佳答案

您确定使用引号 "yyyy" 而不是撇号 'yyyy' 在该 SQL 方言中有效吗?

关于python - 在 Python ODBC 中使用 Microsoft Access SQL 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3956778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com