我有一個看起來像這樣的SQLAlchemy的模型對象:如何防止併發插入創建重複項目?
ResultModelBase = declarative_base()
class Task(ResultModelBase):
"""Task result/status."""
id = sa.Column(sa.Integer, sa.Sequence("task_id_sequence"),
primary_key=True,
autoincrement=True)
task_id = sa.Column(sa.String(255))
在兩個獨立的客戶端進程,該代碼正在運行創造了一個獨特的TASK_ID一個新的實例;必須有隻有一個TASK_ID的實例:
task = session.query(Task).filter(Task.task_id == task_id).first()
if not task:
task = Task(task_id)
session.add(task)
session.flush()
我怎麼能改寫這個代碼,以便它以原子創建一個具有指定ID的任務嗎?
我喜歡的東西比這更實用;一,鎖定什麼? – 2010-11-26 21:53:23