簡短版本:當我嘗試通過ODBC使用Access的DatePart函數時,它無法解析。在Python中使用Microsoft Access SQL運算符ODBC
加長版:
我有一個Microsoft Access查詢與時間戳和得分返回行。我想按天排序,然後按分數排序 - 這是當天有效的高分表。
對於想要更好的功能,我使用DatePart
函數從時間戳中提取年份,月份和日期中的每一個,然後使用ORDER BY
後跟Score。
在Microsoft Access中,查詢工作得很好。
但是,當我使用pyodbc
訪問相同的查詢時,ODBC驅動程序被DatePart函數難住,並認爲它是缺少參數的名稱。
什麼使我驚訝的是,即使我躲在DatePart函數,通過創建一個新的高分查詢,然後SELECT * FROM HighScore
,它仍然抱怨它無法找到參數。顯然,查詢的SQL在這個過程中相當晚的時候正在解決。
我的問題可以是:
- 如何解決在SQL DatePart函數允許訪問運行它,或
- 什麼是時間戳的日期部分進行排序正確的方式通過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)')
您需要提供一些源代碼以及從pyodbc獲得的確切錯誤消息。 – 2010-10-18 06:51:06