Сообщить об ошибке.

Сопутствующие функции и константы модуля sqlite3

В разделе представлены сопутствующие функции и константы модуля sqlite3 с их описанием.

Содержание:


Функции модуля sqlite3

sqlite3.version:

Атрибут модуля sqlite3.version возвращает номер версии этого модуля в виде строки. Это не версия библиотеки SQLite!

Устарел с Python 3.12, будет удалена в Python 3.14: эта константа используется для отражения номера версии пакета pysqlite, сторонней библиотеки, которая использовалась для внесения изменений в sqlite3. Сегодня это не несет никакого смысла и практической ценности.

sqlite3.version_info:

Атрибут модуля sqlite3.version_info возвращает номер версии этого модуля, как кортеж целых чисел. Это не версия библиотеки SQLite.

Устарел с Python 3.12, будет удалена в Python 3.14: эта константа используется для отражения номера версии пакета pysqlite, сторонней библиотеки, которая использовалась для внесения изменений в sqlite3. Сегодня это не несет никакого смысла и практической ценности.

sqlite3.sqlite_version:

Атрибут sqlite3.sqlite_version возвращает номер версии библиотеки SQLite времени выполнения в виде строки.

sqlite3.sqlite_version_info:

Атрибут sqlite3.sqlite_version_info возвращает номер версии библиотеки SQLite времени выполнения в виде набора целых чисел.

sqlite3.complete_statement(sql):

Метод sqlite3.complete_statement() возвращает True, если строка SQL содержит один или несколько полных операторов SQL, оканчивающихся точкой с запятой ';'.

Метод не проверяет синтаксическую правильность SQL, а только отсутствие открытых строковых литералов и то, что оператор завершается точкой с запятой.

Это может быть использовано для создания оболочки для SQLite, как в следующем примере:

# Минимальная оболочка SQLite для экспериментов
import sqlite3

con = sqlite3.connect(":memory:")
con.isolation_level = None
cur = con.cursor()

buffer = ""

print("Введите команды SQL для выполнения в sqlite3.")
print("Введите пустую строку для выхода.")

while True:
    line = input()
    if line == "":
        break
    buffer += line
    if sqlite3.complete_statement(buffer):
        try:
            buffer = buffer.strip()
            cur.execute(buffer)

            if buffer.lstrip().upper().startswith("SELECT"):
                print(cur.fetchall())
        except sqlite3.Error as e:
            print("An error occurred:", e.args[0])
        buffer = ""

con.close()

sqlite3.enable_callback_tracebacks(flag):

Метод sqlite3.enable_callback_tracebacks()

По умолчанию модуль не выдает никаких трассировок в пользовательских функциях, агрегатах, конвертерах, обратных вызовах авторизатора и т. д.

Если необходимо их отладить, то можно вызвать функцию sqlite3.enable_callback_tracebacks() с флагом, установленным в flag=True. После этого получим обратные вызовы от обратных вызовов на sys.stderr.

Используйте False, чтобы снова отключить эту функцию.

Константы модуля sqlite3

sqlite3.LEGACY_TRANSACTION_CONTROL:

Новое в Python 3.12.

Константа sqlite3.LEGACY_TRANSACTION_CONTROL управляет транзакциями в старом стиле (до Python 3.12) Эту константу необходимо присвоить атрибуту Connection.autocommit, чтобы выбрать поведение транзакций используемое до Python 3.12.

Дополнительную информацию смотрите в разделе "Управление транзакциями...".

sqlite3.PARSE_DECLTYPES:

Константа sqlite3.PARSE_DECLTYPES предназначена для использования с параметром detect_types функции sqlite3.connect().

Установка sqlite3.PARSE_DECLTYPES аргументу define_types, заставляет модуль sqlite3 анализировать объявленный тип для каждого возвращаемого столбца. Модуль будет анализировать первое слово объявленного типа. Другими словами в строке integer primary key он будет анализировать integer или для number(10) он будет анализировать number.

Типы объявляются при создании таблицы базы данных. Модуль sqlite3 будет искать функцию конвертера, используя первое слово объявленного типа в качестве ключа словаря конвертера. Например:

CREATE TABLE test(
   i integer primary key,  !-- будет искать конвертер с именем "integer"
   p point,                !-- будет искать конвертер с именем "point"
   n number(10)            !-- будет искать конвертер с именем "number"
 )

Этот константу можно комбинировать с sqlite3.PARSE_COLNAMES, используя побитовый оператор или |.

sqlite3.PARSE_COLNAMES:

Константа sqlite3.PARSE_COLNAMES предназначена для использования с аргументом detect_types функции sqlite3.connect().

Установка sqlite3.PARSE_COLNAMES аргументу define_types заставляет интерфейс SQLite анализировать имя столбца для каждого возвращаемого столбца. Он будет искать функцию преобразователя, используя имя типа, полученное из имени столбца запроса, в качестве ключа словаря преобразователя. Имя типа должно быть заключено в квадратные скобки ([]), например, [mytype].

!-- будет искать конвертер "point"
SELECT p as "p [point]" FROM test;

Эту константу можно комбинировать с sqlite3.PARSE_DECLTYPES, используя побитовый оператор или |.

sqlite3.SQLITE_DBCONFIG_DEFENSIVE:
sqlite3.SQLITE_DBCONFIG_DQS_DDL:
sqlite3.SQLITE_DBCONFIG_DQS_DML:
sqlite3.SQLITE_DBCONFIG_ENABLE_FKEY:
sqlite3.SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER:
sqlite3.SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION:
sqlite3.SQLITE_DBCONFIG_ENABLE_QPSG:
sqlite3.SQLITE_DBCONFIG_ENABLE_TRIGGER:
sqlite3.SQLITE_DBCONFIG_ENABLE_VIEW:
sqlite3.SQLITE_DBCONFIG_LEGACY_ALTER_TABLE:
sqlite3.SQLITE_DBCONFIG_LEGACY_FILE_FORMAT:
sqlite3.SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE:
sqlite3.SQLITE_DBCONFIG_RESET_DATABASE:
sqlite3.SQLITE_DBCONFIG_TRIGGER_EQP:
sqlite3.SQLITE_DBCONFIG_TRUSTED_SCHEMA:
sqlite3.SQLITE_DBCONFIG_WRITABLE_SCHEMA
:

Новое в Python 3.12.

Эти константы используются для методов Connection.setconfig() и Connection.getconfig().

Доступность этих констант зависит от версии SQLite Python, с которой был скомпилирован.