2013-09-06 4 views
0

포스트그레스와 상호 작용하는 파이썬의 pg 모듈이 DML 쿼리에 오류 메시지를 표시하지 않습니다.파이썬 pg 모듈 오류 메시지

의미있는 오류 메시지를 제공하는 pg 모듈에 대한 대안이 있습니까?

>>>import pg 
>>> 
>>> 
>>>conn = pg.connect(dbname="db", user="postgres", host="localhost") 
>>>print conn.query("delete from item where item_id=0") 
>>>None 
>>>print conn.query("delete from item where item_id=0") 
>>>None      #This should have been an error message 
+0

[documentation] (http://www.pygresql.org/pg.html#delete-delete-arow-from-a-database-table)에 따르면'query '대신'delete'를 사용할 수 있습니다 '는 삭제 된 행 수를 반환합니다. 귀하의 경우 '0'의 반환 값 (삭제 된 행이 없음)은 '오류'를 나타냅니다. –

+0

입력 해 주셔서 감사합니다. 당신이 참조하는 API는 래퍼 클래스에 속합니다. 나는 기본적인 기능으로 무언가를 생각하고 있었다. 코드를 굴절시켜야합니다. –

+0

트랜잭션을 커밋하십시오. –

답변

0

psycopg2 module을 알고 계십니까? Python을 통해 PostgreSQL과 상호 작용하는 것은 매우 좋은 모듈 인 것 같습니다. modules' documentation 외에 tutorial available이 있습니다. the docs에 주어진 예제에서 실제로 실패한 명령은 오류 메시지를 인쇄합니다.

개인적으로이 모듈에 대한 경험이 없습니다. 그러나 그것은 매우 멋져 보인다!

2

왜 오류 메시지가 나타 납니까? 레코드를 찾지 못하면 서버에서 오류가 발생하지 않습니다. 그렇다면 일반적으로 적용되는 데이터베이스 드라이버가 오류를 발생시키는 이유는 무엇입니까?

그럴만한 이유가있을 수 있으므로이 경우 오류를 발생시키는 데이터베이스 드라이버는 생각할 수 없습니다. 예를 들어, 데이터베이스 용어에서 오류는 대개 트랜잭션을 롤백하려는 것을 의미합니다.

API를 직접 작성하려는 경우 애플리케이션에서이 문제를 해결할 방법을 결정하거나 대신 경고를 제기하는 것이 좋습니다.

+0

오케이. 삭제/삽입에 대한 지침이 성공하지 못했기 때문에 예외 또는 오류 코드를 발생시켜야한다고 생각했습니다. 내 옵션은 무엇입니까 btw. –

+0

삽입 및 삭제 된 행 수를 잡아서 무엇을 할 것인지를 결정하십시오 .... –

+0

(당신이하는 일은 당신이하는 일에 따라 달라질 수 있으며 때로는 예외를 제기하기도하고 때로는 그렇지 않을 수도 있습니다) –