ユーザファイルを保持するために使用されるpostgresテーブルがあります。 2人のユーザーが同じ名前のファイルを持つことはできますが、ユーザーは同じ名前のファイルを2つ持つことはできません。現在、ユーザーがすでに使用している名前のファイルをアップロードしようとすると、データベースは以下のようなエラーを吐き出します。私がやりたい何条件に基づいて行を挿入する
IntegrityError: duplicate key value violates unique constraint "file_user_id_title_key"
は、ファイル名がユーザーによって使用されているかどうかを確認するために、ファイル名とユーザーIDでデータベースを最初の照会です。名前がすでに使用されている場合はエラーを返し、そうでない場合は行を書き込みます。
cur.execute('INSERT INTO files(user_id, title, share)'
'VALUES (%s, %s, %s) RETURNING id;',
(user.id, file.title, file.share))
しかし、これがユニーク制約がすることです。あなたはあなたのメッセージにエラーを入れました。あなたはトラップして、好きなように処理するだけです。 –
私は、ユニークな制約があるにも関わらず、バックエンドがデータベースの前にエラーをキャッチすることを望んでいました。 – Brosef
プライマリキーシーケンスをリセットする - シーケンスが壊れているhttp://stackoverflow.com/questions/244243/how-to-reset-postgres-primary-key-sequence-when-it-falls-out-of-sync – dmitryro