私はそのようなテーブルを持っています:
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 の行が 1 つあります。次に:
t = Tag('second tag')
dbsession.add(t)
dbsession.commit()
{id: 1, name: 'second tag'} と {id: 2, name: 'first_tag'} の 2 行があります。
次へ (最終ステップ):
t = Tag('third tag')
dbsession.add(t)
dbsession.commit()
IntegrityError : (IntegrityError) 重複するキー値が一意の制約 "tag_pkey" に違反しています
(id = 2 の行を作成したいのですが、既に最初のタグに関与しています)
どういうわけかpostgresに言うことは可能ですか:そのようなpkeyが存在する場合は、それが利用可能になるまで次を試してください?
ダンプを使用する場合に非常に便利です。
前もって感謝します!