2016-06-22 24 views
1

基本的には、MS Accessデータベースに基づくTable1のColumn1_mbglフィールドデータを更新しようとしています。スクリプトはエラーなく実行されますが、テーブルがチェックされても更新は行われませんでした。コードに示されているように2つのオプションを試してみましたが、成功しませんでした。 2番目のオプションは、MS Accessクエリから直接生成されたSQLコードです。誰も私がコードにないものを提案することができますか?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

where条件を満たすdb内のレコードがあるかどうかチェックしましたか?また、クエリがPythonの外で予想どおりに更新されているかどうかをチェックする価値があります。 – notionquest

+0

はいMS Access内で同じクエリが正常に更新されたため、この条件のデータが存在します。 – Curtis

+2

あなたはUPDATEクエリを実行した後に 'conn.commit()'を忘れました。 –

答えて

3

あなたはUPDATEクエリを実行した後conn.commit()に忘れてしまいました。 Python database APIは、デフォルトで「autocommit」がオフになっている接続を指定するため、明示的にcommitが必要です。

関連する問題