2017-09-11 3 views
0

私はサーバ上で、ODBC接続を使用して既存の テーブル 'loading_log'を更新する必要があります。pyodbcを使用したSQL文の効果がありません

問題は、自分のスクリプトがデータベース内のテーブルに影響を与えないことです。つまり、レコードを削除せず、新しいレコードを挿入しないということです。

同時に、実行後にスローされたエラーは表示されません。 デスクトップから同じ資格情報を使用して同じSQLクエリを実行すると、正常に動作します。

私の質問: なぜpythonスクリプトではうまくいかないのですか?

は、ここに私のコードからの抜粋です:

curs.commit() 

または自動コミットモードを使用するようにpyodbcを伝える:

curs.execute(''' 
     delete from loading_log 
    ''') 

    # 
    #record loaded record ids into loading_log table 
    # 

    #logging.info('insert laoded record id data into loading_log table') 
    curs.execute(''' 
    insert into loading_log (catalog_sample_events_id,ShippingId) 
    select top 500 
    cs.catalog_sample_events_id, 
    cs.shipping_id ShippingId 
    from catalog_sample_events cs 
    join event_type et on et.event_type_id = cs.event_type_id 
    join event_source es on es.event_source_id = cs.event_source_id 
    join etl_status esi on esi.etl_status_id = cs.etl_status_id 
    where cs.catalog_sample_events_id > ? 
    order by cs.catalog_sample_events_id 
    ''', max_id) 

答えて

1

あなたは、トランザクションをコミットする必要があります。詳細はpyodbc wikiを参照してください。

関連する問題