gpt4 book ai didi

Python 和 Postgres : would psycopg2. 连接锁定表?

转载 作者:搜寻专家 更新时间:2023-10-30 22:12:28 24 4
gpt4 key购买 nike

我正在运行一个 python 脚本来执行 ETL(提取、转换、加载),并将所有 psql 查询放在一个事务中。这是交易:

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()

我知道在运行 q4 时表会被锁定,但我不确定在整个事务(从连接到提交)期间表是否会被锁定?

有没有办法测试表是否被锁定?我现在没有太多数据(大约 100 行)..

非常感谢!

最佳答案

I know the table will be locked when running q4, but I'm not sure if the table would be locked during the whole transaction(from connect to commit)?

锁在第一次需要时获取,并在事务提交时释放,而不是之前。

因此在您的情况下,您直到 q4 才访问 t,所以那是获取锁的时间。 UPDATE takes a ROW EXCLUSIVE lock on the table .尽管名称如此,但它是表级锁;此外,对更新的行进行行级锁定。

Is there a way to test if the table is locked? I don't have much of data right now (about 100 rows)..

Query pg_locks .了解同时存在表级和行级锁。

关于Python 和 Postgres : would psycopg2. 连接锁定表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23302469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com