3

Python から postgresql を使用してデータベース テーブルを更新しました。私のコードは

import psycopg2
connection=psycopg2.connect("dbname=homedb user=ria")
cursor=connection.cursor()
l_dict= {'licence_id':1}
cursor.execute("SELECT * FROM im_entry.usr_table")
rows=cursor.fetchall()

for row in rows:
   i=i+1
   p = findmax(row)
   #print p
   idn="id"
   idn=idn+str(i)


   cursor.execute("UPDATE im_entry.pr_table SET (selected_entry) = ('"+p+"') WHERE  image_1d ='"+idn+"'")
   print 'DATABASE TO PRINT'
cursor.execute("SELECT * FROM im_entry.pr_table")
rows=cursor.fetchall()
for row in rows:
    print row   

更新されたテーブルが表示されました

しかし、psql で更新されたテーブルを homedb=# SELECT * FROM im_entry.pr_table; として表示すると、空のテーブルが表示されました..何が問題なのですか?? 私を助けてください

4

1 に答える 1

7

おそらくトランザクションをコミットしていません。つまり、connection.commit()すべての更新後に が必要です。

自動コミットなど、分離レベルに対して行うことができるさまざまな設定があるため、自分でコミットを発行する必要はありません。たとえば、psycopg2/python db api を使用してデータベース トランザクションを行うにはどうすればよいですか?を参照してください。

于 2011-03-17T13:03:55.530 に答える