我使用pyodbc通過Microsoft Jet從Python程序訪問Microsoft Access 2003數據庫中的數據。PyODBC和Microsoft Access:簡單查詢的結果不一致
Microsoft Access數據庫來自第三方;我只是在讀數據。
我通常在提取我需要的數據方面取得了成功,但我最近注意到了一些差異。
我已經熬它歸結爲一個簡單的查詢,形式爲:
SELECT field1 FROM table WHERE field1 = 601 AND field2 = 9067
我混淆的字段名稱和值,但實際上,它並沒有得到多少比這更微不足道!當我在Access中運行查詢時,它會返回一條記錄。
然後我跑過來pyodbc,其代碼如下所示:
connection = pyodbc.connect(connectionString)
rows = connection.execute(queryString).fetchall()
(同樣,它不會比這更微不足道!)
查詢字符串的值被切斷 - 從Access中的工作查詢中粘貼,但它返回沒有記錄。我預計它會返回相同的記錄。
當我更改查詢以搜索字段2賓果的不同值時,它起作用。這只是它拒絕的一些價值。
所以,請幫助我。我應該在哪裏看下面解釋這種差異?如果我不能相信瑣碎的查詢的結果,我沒有機會參與這個項目!
更新:它變得更簡單!下面的查詢給出不同的號碼......
SELECT COUNT(*)FROM表
我深思,如果它被另一個應用程序,偶爾來填充數據涉及到某種形式的緩存和/或不當事務管理。
如果你有一個遊標對象在那裏執行查詢字符串?然後在遊標上調用Fetchall來產生行。請參閱http://code.google.com/p/pyodbc/wiki/Row – barrowc 2009-05-06 00:56:27
@barrowc,有趣。我沒有注意到缺少cursor()調用。我相信我從某個地方的例子中複製了這個。我嘗試在[rows = connection.cursor()。execute(queryString).fetchall()]中添加它,但它沒有區別 - 顯然pyodbc比Python DB API規範更寬容。 – Oddthinking 2009-05-06 05:21:39