0
我正在運行一個python腳本來執行ETL(提取,轉換,加載),並將所有的psql查詢放在一個事務中。這裏的交易:Python&Postgres:會psycopg2.connect鎖定表嗎?
conn = psycopg2.connect(...)
try:
cur = conn.cursor() #q1
cur.execute("create temp table tt (like t INCLUDING DEFAULTS)") #q2
cur.execute("copy tt from '/file.csv' DELIMITER ',' CSV HEADER ") #q3
cur.execute("...") #q4, update t based on data from tt
conn.commit()
except:
conn.rollback()
我知道該表將被鎖定,運行時第4季度,但我不知道,如果表將在整個交易過程中(從連接犯)被鎖定?
有沒有辦法測試表是否被鎖定?我現在沒有太多數據(大約100行)。
非常感謝!
Python沒有'catch'。它有'except'。另外我不認爲有理由爲每個連接鎖定表格。 – msvalkon
是的,我的錯誤。應該是除外。 @msvalkon謝謝! – odieatla
你不應該使用無條件'except'。至少,'除了異常',但最好'除了psycopg2.DatabaseError'。你也應該總是記錄或重新拋出異常,永遠不要沉默地吞下它。 –