Отладка (отображение) команды SQL, отправленной в базу данных SQLAlchemy

| | | |

У меня есть класс ORM с именем Person, который охватывает таблицу пользователей:

После настройки подключения к базе данных и т. д. я запускаю оператор:

people = session.query(Person).all() 

Таблица person не содержит данных (пока), поэтому, когда я печатаю переменную people, я получаю пустой список.

Я переименовал таблицу, на которую ссылается мой класс ORM People, в people_foo (которого не существует).

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

Поэтому у меня есть следующие 2 вопроса:

  1. Как мне настроить SQLAlchemy так, чтобы что он передает ошибки базы данных обратно в сценарий?
  2. Как я могу просмотреть (т.е. распечатать) SQL, отправляемый механизму базы данных?

Если это поможет, я использую PostgreSQL.

[Изменить]

Я пишу пакет. В моем скрипте __main__.py у меня есть следующий код (здесь он сокращен):

### __main__.py import common # импортирует ведение журнала и определяет функции настройки ведения журнала etc logger = logging.getLogger(__name__) def main(): parser = OptionParser(usage="%prog [options] <commands>", version="%prog 1.0") commands = OptionGroup(parser, "commands") parser.add_option( "-l", "--logfile", dest="logfile", metavar="FILE", help="log to FILE. если не установлено, ведение журнала не будет" ) parser.add_option( " --level", dest="loglevel", metavar="LOG LEVEL", help="Уровень отладки. если не задан, уровень по умолчанию будет низким" ) # Установить значения по умолчанию, если не указано, если не options.loglevel: loglevel = 1 else: loglevel = options.loglevel если не options.logfile: logfilename = "datafeed.log" else: logfilename = options.logfile common.setup_logger(False, logfilename, loglevel) # и так далее ... #### dbfuncs. py import logging # не знаю, как "привязать" к регистратору в __main__.py logging.getLogger("sqlalchemy.engine").se tLevel(logging.INFO) engine = create_engine("postgres://postgres:[email protected]:port/dbname", echo=True) 

[Edit2]

Модуль Common правильно настраивает регистратор, и я могу использовать регистратор в других своих модулях, которые импортируют common.

Однако в модуле dbfuncs я получаю следующую ошибку/предупреждение:

Не удалось найти обработчиков для регистратора "sqlalchemy.engine.base.Engine

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method