документация по исключениям sqlite3 - PullRequest
0 голосов
/ 11 октября 2018

Я хотел бы получить ясность о намерениях исключений в модуле sqlite3 в python.В частности, исключения, которые я вижу, не соответствуют цели в документах .

Например, в документах говорится, что sqlite3.ProgrammingError - это

... возникает для ошибок программирования, например, таблица не найдена или уже существует, синтаксическая ошибка в операторе SQL, невернаячисло указанных параметров и т. д.

Однако на моей машине этот код не выдает sqlite3.ProgrammingError:

import sqlite3
conn = sqlite3.connect(':memory:')
cursor = conn.cursor()
cursor.execute('CREATE TABLE foo (name TEXT PRIMARY KEY);')
cursor.execute('CREATE TABLE foo (name TEXT PRIMARY KEY);')

Выдает sqlite3.OperationalError: table foo already exists вместо этого.

Аналогично, этот код не выдает sqlite3.ProgrammingError на моей машине:

import sqlite3
conn = sqlite3.connect(':memory:')
cursor = conn.cursor()
execute('INSERT INTO foo VALUES ("row1");')

Вместо этого он выдает: sqlite3.OperationalError: no such table: foo

Это не похожев соответствии с документацией OperationalError:

Возникло исключение для ошибок, которые связаны с работой базы данных и не обязательно находятся под контролем программиста, например, происходит непредвиденное разъединение, имя источника данных не найденотранзакция не может быть обработана и т. д. Это подкласс DatabaseError.

...