2012-05-03 2 views
0

나는 버전 2.7에서 실행되는 python 응용 프로그램을 갖고 있는데, postgres 9.1을 sqlalchemy 0.7로 사용하고 있습니다. 내가 응용 프로그램 하나를하여 키 ID 증가를 다시 시작할 때SQL Alchemy + Postgres + Python 무결성 오류

나는 내가 추가하고 items.The 코드가 잘 작동하고 삭제하지만 지금은 일부 수정을 한 후 지금

$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'} 

을받을 이로부터 WX 파이썬 GUI를 가지고 . 분명히 뭔가가 데이터베이스의 ID 시퀀스를 다시 설정하는 것을 볼 수 있습니다. anypne은 파이썬 코드를 작성하여이 문제를 해결할 수있는 방법에 대해 도움을 주시겠습니까? 아니면이 문제를 극복하기위한 easiet 단계는 무엇입니까? psql 명령을 사용하여 작업을 시도했지만 지식 부족으로 인해 실패했습니다. 솔루션이 쉬운 단계로 설명 될 수 있다면 좋을 것입니다.

당신은 ID = 4 행을 삽입하고 있지만 이미이 ID로이 행된다 로그에 모든 것이 있습니다

답변

1

글쎄 대답을 찾았습니다. 데이터베이스 시퀀스가 ​​1로 재설정되는 또 다른 데이터베이스 연결을 기다리고있었습니다. 따라서 응용 프로그램이 시작될 때 position 1을 찾습니다. 그래서 sequencelast no으로 변경해야했습니다. 그것은 효과가있다!

0

.

테이블에 ID = 4 인 행이 있습니까?