【问题标题】:Postgresql table updatePostgresql 表更新
【发布时间】:2011-07-17 09:13:37
【问题描述】:

我使用 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; 我有一个空表显示..怎么了?请帮帮我

【问题讨论】:

  • 我自己解决了。我忘记在 INSERT 和 UPDATE 语句之后的过程中使用 COMMIT 来提交所做的更改!!
  • findmax() 函数究竟做了什么?我不认为循环是必要的,但这取决于findmax() 在做什么

标签: python database postgresql psycopg


【解决方案1】:

您可能没有提交事务,即在所有更新后您需要connection.commit()

您可以对隔离级别进行各种不同的设置,例如自动提交,所以你不需要自己发出提交。例如,请参阅How do I do database transactions with psycopg2/python db api?

【讨论】:

    猜你喜欢
    • 2019-08-20
    • 2016-10-08
    • 1970-01-01
    • 2020-08-10
    • 2015-08-03
    • 2021-02-09
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多