通过python或Postgres独家访问PostgreSQL表

时间:2011-05-16 07:04:41

标签: python postgresql

我有一个表格,其中包含存储在PG中的URL列表,我有一个应用程序,它应该获取可用URL的子集并处理它们。此应用程序将在检索URL集时更新已处理的field = true。我将在不同的机器上运行多个实例。如何确保我对PG的访问是独占的,所以我不会在不同的机器上使用相同的URL集合?

2 个答案:

答案 0 :(得分:2)

使用LOCK语句可以在postgresql查询中纯粹解决此问题。以下是带有示例的文档的链接:

http://www.postgresql.org/docs/8.1/static/sql-lock.html

答案 1 :(得分:2)

您可以在postgresql:table-level锁,行级锁和咨询锁中以多种方式锁定行。

http://www.postgresql.org/docs/9.0/static/explicit-locking.html

但是,在您的情况下,如果您想要良好的并发性,锁定是不够的:

update links
set processing = true
where id in (
  select id
  from links
  where not processed
  and not processing
  limit 100
  for update
  )
returning *

额外的processing字段可以让多个作业在不同的行集上工作。