2016-06-22 2 views
1

В основном я пытаюсь обновить данные поля Column1_mbgl в таблице 1, все они основаны в базе данных MS Access. Скрипт выполняется без каких-либо ошибок, но когда таблица проверена, обновление не произошло. Я пробовал два варианта, как показано в коде, без каких-либо успехов. Второй вариант - это код SQL, сгенерированный непосредственно из запроса MS Access. Может ли кто-нибудь сказать, чего мне не хватает в коде?Pyodbc не обновляет таблицу MS Access

#import pypyodbc 
import pyodbc 

# MS ACCESS DB CONNECTION 
pyodbc.lowercase = False 
conn = pyodbc.connect(
    r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" + 
    r"Dbq=C:\temp\DB_access.accdb;") 

# OPEN CURSOR AND EXECUTE SQL 
cur = conn.cursor() 

# Option 1 - no error and no update 
cur.execute("UPDATE Table1 SET Column1_mbGL = Column2_mbGL-0.3 WHERE ((Column3_name='PZ01') AND (DateTime Between #6/14/2016 14:0:0# AND #6/16/2016 12:0:0#) AND (TYPE='LOG'))"); 

# Option 2 - no error and no update 
#cur.execute("UPDATE Table1 SET Table1.Column1_mbGL = [Table1]![Column2_mbGL]-0.3 WHERE (((Table1.Column3_name)='PZ01') AND ((Table1.DateTime) Between #6/14/2016 14:0:0# And #6/16/2016 12:0:0#) AND ((Table1.TYPE)='LOG'))"); 

cur.close() 
conn.close() 
+0

Вы проверили, есть ли у вас записи в db, удовлетворяющие условиям условия? Кроме того, стоит проверить, обновляется ли запрос, как ожидается, вне python. – notionquest

+0

Да, тот же запрос выполнялся внутри MS Access с успешными обновлениями, поэтому для этого условия есть данные. – Curtis

+2

Вы забыли 'conn.commit()' после выполнения вашего запроса UPDATE. –

ответ

3

Вы забыли conn.commit() после выполнения вашего запроса UPDATE. Python database API указывает, что соединения открываются с отключенным «autocommit», поэтому требуется явное commit.