我有这样的表:
class Tag(Base):
__tablename__ = 'tag'
id = Column(Integer, primary_key=True)
name = Column(Unicode(50), nullable=False)
def __init__(self, name):
self.name = name
假设表是空的。比我以这种方式插入一些数据:
t = Tag('first tag')
t.id = 2
dbsession.add(t)
dbsession.commit()
没关系:我的 postgresql 表中有一行 id = 2。下一步:
t = Tag('second tag')
dbsession.add(t)
dbsession.commit()
比我有 2 行: {id: 1, name: 'second tag'} 和 {id: 2, name: 'first_tag'}
下一步(最后一步):
t = Tag('third tag')
dbsession.add(t)
dbsession.commit()
IntegrityError:(IntegrityError)重复键值违反唯一约束“tag_pkey”
(它想创建 id = 2 的行,但它已经使用第一个标签)
是否有可能以某种方式对 postgres 说:如果存在这样的 pkey,请尝试下一步直到它可用?
在使用转储时非常有用。
提前致谢!