2012-02-10 6 views
4

Я просмотрел документацию, но не нашел ничего, что позволило мне узнать, успешно ли выполнена последняя команда, которую я выполнил с помощью cursor.execute («...»).Как узнать, успешно ли я создал таблицу (Python, Psycopg2)?

Я ожидаю ответа как «1 строка затронута».

+0

вы можете использовать цикл for, я полагаю ... проверить, не было ли это затронуто. – Bry6n

ответ

2

Я ожидал бы какого-то exception to be risen.
Если все прошло нормально - код ошибки 00000, и никакое исключение не поднимется.

В create table случае, вы всегда можете double check:

try: 
    cur.execute("SELECT ouch FROM aargh;") 
except Exception, e: 
    pass 

errorcodes.lookup(e.pgcode[:2]) 
# 'CLASS_SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION' 
errorcodes.lookup(e.pgcode) 
# 'UNDEFINED_TABLE' 
3

Это старый вопрос, но один способ проверить, для успешной работы с psycopg2 просто посмотреть на атрибут rowcount для курсора после вашего заявление. Этот атрибут возвращает количество строк, на которые ссылается последний оператор execute.

например.

connection = psycopg2.connect(dbname="foo",user="postgres") 
cur = connection.cursor() 
cur.execute("INSERT INTO foo VALUES (%s, %s)", (1,2)) 
cur.rowcount # returns 1 
cur.execute("SELECT * FROM foo") 
cur.rowcount # returns 0 

Подобный атрибут messagestatus, который возвращает строку, в том числе типа последней операции, выполненной вместе с количеством строк, затронутых.

+0

Аналогичным атрибутом является 'statusmessage'. Документация [здесь] (http://initd.org/psycopg/docs/cursor.html) –

Смежные вопросы