21

これが私のコードです:

import cx_Oracle

conn = cx_Oracle.connect(usr, pwd, url)
cursor = conn.cursor()
cursor.execute("UPDATE SO SET STATUS='PE' WHERE ID='100'")
conn.commit()

を削除してもconn.commit()、テーブルは更新されません。しかし、selectステートメントの場合、それは必要ありませんconn.commit()。なんで気になるの?

4

3 に答える 3

27

DB-API仕様では、デフォルトで、データベースに接続すると新しいトランザクションが開始される必要があります。commit行った変更を確認するかrollback、破棄する必要があります。

データベースが自動コミット機能をサポートしている場合、これは最初はオフにする必要があることに注意してください。

純粋なSELECTステートメントは、データベースに変更を加えないため、変更をコミットする必要はありません。

于 2010-05-17T09:54:03.603 に答える
7

commit は、現在のトランザクションのすべての変更を保存するようにデータベースに指示するために使用されます。

Select はデータを変更しないため、保存するものもコミットするものもありません

取引についてはウィキペディアを参照してください

于 2010-05-17T09:51:53.937 に答える