2011-09-18 43 views
7

Tôi có thể gửi các truy vấn chọn với bất kỳ sự cố nào nhưng khi tôi gửi cập nhật và chèn truy vấn, nó bắt đầu đợi chuỗi và không trả lời nữa. Tôi không thể chắc chắn nhưng nó có vẻ giống như một vòng lặp.psycopg2 (chèn, cập nhật) ghi vấn đề

Tôi biết chúng tôi phải sử dụng "commit()" để áp dụng thay đổi nhưng nó không hoạt động.

Đây là mã của tôi:

import psycopg2 
conn = psycopg2.connect("dbname='test' user='postgres' host='localhost' password='xx"); 
cursor = conn.cursor() 
cursor.execute("UPDATE recording SET rank = 10 WHERE id = 10;") 
conn.commit() 
cursor.close() 
+0

Tôi đang gặp vấn đề tương tự với truy vấn chèn của mình. –

Trả lời

-4

Vấn đề là psycopg2 không có hỗ trợ cho luồng.

4

Nó rất có thể một khóa trong cơ sở dữ liệu, với chủ đề/quá trình cố gắng cập nhật các bản ghi tương tự.

+0

Tôi sử dụng luồng trong Python để cập nhật các hàng (mỗi truy vấn cập nhật hàng khác nhau). có cách nào để cập nhật các bản ghi mà không cần khóa không? –

+0

Nó phụ thuộc vào những gì bạn phải làm. Sử dụng một giao dịch tự động sẽ đảm bảo có giao dịch ngắn và quá trình bị khóa sẽ hoạt động trở lại sớm, nhưng nó thực sự phụ thuộc vào hiệu ứng mong muốn. – piro

14
import psycopg2 
conn = psycopg2.connect(database="dbasename",user="username",password='your_password',host='web_address',port='your_port') 
cursor = conn.cursor() 
cursor.execute("UPDATE table_name SET update_column_name=(%s) WHERE ref_column_id_value = (%s)", ("column_name","value_you_want_to_update",)); 
conn.commit() 
cursor.close() 

Bạn không định dạng đúng câu lệnh thi hành.

+0

Tôi không thấy biến "cur" xuất phát từ đâu ... thật đáng tiếc – CheeHow

Các vấn đề liên quan