Я использую pyobbc через Microsoft Jet для доступа к данным в базе данных Microsoft Access 2003 из программы Python.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()
(Опять же, это не становится намного более тривиальным, чем это!)
Значение QueryString режется -and-ined из рабочего запроса в Access, но он возвращает no записей. Я ожидал, что он вернет ту же запись.
Когда я меняю запрос на поиск другого значения для field2, bingo, он работает. Это лишь некоторые ценности, которые он отвергает.
Итак, пожалуйста, помогите мне. Где я должен смотреть рядом, чтобы объяснить это несоответствие? Если я не могу доверять результатам тривиальных запросов, у меня нет шансов на этот проект!
Обновление: Это становится еще проще! Следующий запрос дает разные номера ...
SELECT COUNT (*) FROM таблицы
мыслю, если это связано с той или иной форме кэширования и/или ненадлежащего управления транзакциями другим приложением, которое время от времени, чтобы заполняющий данные ,
Если у вас есть объект курсора для выполнения строки запроса? Затем Fetchall будет вызываться на курсоре для создания строк. См. Http://code.google.com/p/pyodbc/wiki/Rows – barrowc
@barrowc, Интересно. Я не заметил отсутствие вызова курсора(). Я уверен, что я скопировал это из примера где-нибудь. Я попытался добавить его обратно в [rows = connection.cursor(). Execute (queryString) .fetchall()], но это не имело никакого значения - очевидно, pyodbc более прощает, чем спецификация API Python DB. – Oddthinking