1

私は、sqlalchemy0.7でpostgres9.1を使用してバージョン2.7で実行されるPythonアプリケーションを持っていると思います。

アイテムを追加および削除するwxpythonguiがあります。コードは正常に機能していましたが、いくつかの変更を加えた後、受け取りました。

$self.session.commit()
$  File "build\bdist.win32\egg\sqlalchemy\orm\session.py", line 645, in commit
$  File "build\bdist.win32\egg\sqlalchemy\orm\session.py", line 313, in commit
$  File "build\bdist.win32\egg\sqlalchemy\orm\session.py", line 297, in _prepare_impl
$  File "build\bdist.win32\egg\sqlalchemy\orm\session.py", line 1547, in flush
$  File "build\bdist.win32\egg\sqlalchemy\orm\session.py", line 1616, in _flush
$  File "build\bdist.win32\egg\sqlalchemy\orm\unitofwork.py", line 328, in execute
$  File "build\bdist.win32\egg\sqlalchemy\orm\unitofwork.py", line 472, in execute
$  File "build\bdist.win32\egg\sqlalchemy\orm\mapper.py", line 2291, in _save_obj
$  File "build\bdist.win32\egg\sqlalchemy\engine\base.py", line 1405, in execute
$ File "build\bdist.win32\egg\sqlalchemy\engine\base.py", line 1538, in           
$ _execute_clauseelement
$  File "build\bdist.win32\egg\sqlalchemy\engine\base.py", line 1646, in     
$_execute_context
$  File "build\bdist.win32\egg\sqlalchemy\engine\base.py", line 1639, in 
$_execute_context
$  File "build\bdist.win32\egg\sqlalchemy\engine\default.py", line 330, in do_execute
$sqlalchemy.exc.IntegrityError: (IntegrityError) duplicate key value violates
$ unique constraint "Equipment_pkey"
$DETAIL:  Key (id)=(4) already exists.
$ 'INSERT INTO "Equipment" (name, "numPorts") VALUES (%(name)s, %(numPorts)s)     
$RETURNING "HWCIs".id' {'numPorts': 0, 'name': u'jkhj'}

アプリケーションを再起動すると、キーIDが1つ増えます。何かがデータベースのIDシーケンスをリセットしていることがはっきりとわかります。anypneは、Pythonコードを記述してこの問題を修正する方法、またはこの問題を克服するための最も簡単な手順について教えてください。psqlコマンドを使って作業してみましたが、知識が不足しているため失敗しました。簡単な手順で解決策を説明できれば、それは素晴らしいことです。

4

2 に答える 2

1

さて、私は答えを見つけました。別のデータベース接続に接続していたため、データベース シーケンスが 1 にリセットされました。そのため、アプリケーションの起動時にposition 1. だから私はに変更する必要がありsequenceましたlast no。出来た!

于 2012-05-25T01:28:05.510 に答える
0

ログにはすべてがあります:

ID=4 の行を挿入しようとしていますが、この ID の行が既に存在します。

テーブルに id=4 の行がありますか?

于 2012-05-03T12:50:50.103 に答える