Как получить коды результата / ошибки SQLite в Python

Как получить (расширенный) код результата / ошибки из SQLite-запроса в Python? Например:

con = sqlite3.connect("mydb.sqlite") cur = con.cursor() sql_query = "INSERT INTO user VALUES(?, ?)" sql_data = ("John", "MacDonald") try: cur.execute(sql_query, sql) self.con.commit() except sqlite3.Error as er: # get the extended result code here 

Теперь предположим, что первый столбец должен быть уникальным, и в первом столбце уже есть запись базы данных с «Джоном». Это вызовет IntegrityError, но я хотел бы узнать код результата / ошибки SQLite, как указано на http://www.sqlite.org/rescode.html#extrc . Я хочу знать, потому что я хочу предпринять разные действия для разных ошибок.

2 Solutions collect form web for “Как получить коды результата / ошибки SQLite в Python”

В настоящее время вы не можете получить коды ошибок через модуль sqlite3 Python. В файле https://www.sqlite.org/c3ref/errcode.html API C предоставляет основные коды ошибок, расширенные коды ошибок и сообщения об ошибках через sqlite3_errcode , sqlite3_extended_errcode и sqlite3_errmsg соответственно. Однако поиск источника CPython показывает, что:

  • sqlite3_extended_errcode даже не вызван
  • sqlite3_errmsg и результат, отображаемый как сообщение об исключении
  • sqlite3_errcode , но результат никогда не отображается напрямую; он просто используется, чтобы решить, какой класс Exception поднять

Хотя функция, о которой вы просите, была бы полезна (действительно, мне нужно это прямо сейчас для отладки и разочарование ее отсутствием), она просто не существует прямо сейчас.

 try: cur.execute(sql_query, sql_) self.con.commit() except sqlite3.Error as er: print 'er:', er.message 

дает вам ошибку. Или: er.args. Это список, я не знаю, может ли он содержать более одного элемента. Первый элемент – это сообщение, возвращенное er.message

Другая возможность:

 a,b,c = sys.exc_info() for d in traceback.format_exception(a,b,c) : print d, 

Ошибка Sqlite в c

  • Как я могу ссылаться на столбцы по их именам в python, вызывающем SQLite?
  • Должен ли я хранить данные DateTime как julianday в SQLite?
  • Python, SQLite и потоки
  • Фиксировать поведение и атомарность в модуле python sqlite3
  • Сохранение кортежей как типов данных blob в Sqlite3 в Python
  • sqlite3.ProgrammingError: Неправильное количество привязок. В текущем заявлении используется 1, и имеется 74 поставленных
  • Каковы реальные уровни абстракции базы данных для Python
  • Force Python откажется от собственного sqlite3 и использует (установленную) последнюю версию sqlite3
  • Python - лучший язык программирования в мире.