Шаг 211.
Основы языка Python.
Доступ к базе данных SQLite из Python. Трассировка выполняемых запросов

    На этом шаге мы рассмотрим выполнение указанного действия.

    Иногда возникает необходимость выяснить, какой запрос обрабатывается в данный момент времени, и выполнить при этом какие-либо действия - т. е. произвести трассировку. Именно для таких случаев объект соединения, начиная с Python 3.3, поддерживает метод set_trace_callback(<Функция>). Он позволяет зарегистрировать функцию, которая будет выполнена после обработки каждой команды SQL. Эта функция должна принимать единственный параметр - строку с очередной обрабатываемой SQL-командой, и не должна возвращать результата. Давайте используем этот метод, чтобы выводить на экран каждую команду на доступ к базе данных, что будут выполняться в нашей программе.

import sqlite3

# Объявляем функцию, которая станет выводить команды на экран
def tracer (command):
    print(command)

con = sqlite3.connect(r"C:\book\catalog.db")
con.set_trace_callback(tracer) # Регистрируем функцию tracer()
con.execute("SELECT * FROM user;")
con.execute("SELECT * FROM rubr;")
con.close()
Архив с файлом можно взять здесь.

    Результат работы приложения:

SELECT * FROM user;
SELECT * FROM rubr;

    В результате выполнения этого кода каждый раз, когда вызывается метод execute (), на экране будет появляться код SQL-запроса к базе, выполняемого этим методом.

    Чтобы отменить трассировку запросов, следует вызвать метод set_trace_callback(), передав ему в качестве параметра None:

  con.set_trace_callback(None)

    Со следующего шага мы начнем рассматривать организацию доступа к базам данных MySQL.




Предыдущий шаг Содержание Следующий шаг