Debugowanie (wyświetlanie) polecenia SQL wysłanego do bazy danych przez SQLAlchemy

| | | |

Mam klasę ORM o nazwie Person, która owija się wokół tabeli osoby:

Po skonfigurowaniu połączenia z bazą danych itp. uruchamiam instrukcję:

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

Tabela person nie zawiera żadnych danych (jeszcze), więc kiedy drukuję zmienną people, otrzymuję pustą listę.

Zmieniłem nazwę tabeli, do której odwołuje się moja klasa ORM People, na people_foo (który nie istnieje).

Następnie uruchamiam skrypt ponownie. Byłem zaskoczony, że podczas próby uzyskania dostępu do tabeli, która nie istnieje, nie został zgłoszony żaden wyjątek.

Dlatego mam następujące 2 pytania:

  1. Jak mogę tak skonfigurować SQLAlchemy że propaguje błędy bazy danych z powrotem do skryptu?
  2. Jak mogę wyświetlić (tj. wydrukować) kod SQL wysyłany do silnika bazy danych?

Jeśli to pomaga, używam PostgreSQL.

[Edytuj]

Piszę pakiet. W moim skrypcie __main__.py mam następujący kod (tu skrócony):

### __main__.py import common # importuje rejestrowanie i definiuje funkcje konfiguracji rejestrowania etc logger = logging.getLogger(__name__) def main(): parser = OptionParser(usage="%prog [opcje] <commands>", version="%prog 1.0") commands = OptionGroup(parser, "commands") parser.add_option( "-l", "--logfile", dest="logfile", metavar="PLIK", help="log to FILE. jeśli nie ustawione, logowanie nie zostanie wykonane" ) parser.add_option( " --level", dest="loglevel", metavar="POZIOM DZIENNIKA", help="Poziom debugowania. jeśli nie jest ustawiony, poziom będzie domyślnie niski" ) # Ustaw wartości domyślne, jeśli nie określono, jeśli nie, options.loglevel: loglevel = 1 else: loglevel = options.loglevel jeśli nie options.logfile: logfilename = "datafeed.log" else: logfilename = options.logfile common.setup_logger(False, logfilename, loglevel) # i tak dalej ... #### dbfuncs. py import logging # nie wiem, jak "powiązać" z rejestratorem w __main__.py logging.getLogger("sqlalchemy.engine").se tLevel(logging.INFO) engine = create_engine("postgres://postgres:[email protected]:port/dbname", echo=True) 

[Edytuj2]

Moduł Common ustawia logger poprawnie i mogę go używać w innych moich modułach, które importują common.

Jednak w module dbfuncs, ja otrzymuję następujący błąd/ostrzeżenie:

Nie znaleziono programów obsługi dla loggera „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