2011-03-17 3 views
3

테이블 업데이트가 내 코드를 내가 homedb = #로 psql를 업데이트 테이블을 표시 할 때PostgreSQL을 내가 파이썬 에서 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 

업데이트 된 테이블이

을 표시 가지고 그러나 SELECT했다 * FROM im_entry.pr_table; 빈 테이블이 표시되었습니다. 무엇이 잘못 되었습니까 ?? 제발 도와주세요

+0

나는 그것을 풀었다. 나는 COMMIT를 INSERT와 UPDATE 문 다음에 프로 시저로 사용하는 것을 잊었다 !! – Ria

+0

'findmax()'함수는 정확히 무엇을합니까? 나는 루프가 필요하다고 생각하지 않는다. 그러나 그것은'findmax()'가 무엇을하는지에 달려있다. –

답변

7

당신은 트랜잭션을 커밋하지 않을 것입니다. 즉, 모든 업데이트 후에 connection.commit()이 필요합니다.

격리 수준을 설정할 수있는 다양한 설정이 있습니다. 예 : autocommit이므로 커밋을 직접 실행할 필요가 없습니다. 예를 들어, How do I do database transactions with psycopg2/python db api?

관련 문제