Debuggen (Anzeigen) des SQL-Befehls, der von SQLAlchemy an die Datenbank gesendet wurde

| | | |

Ich habe eine ORM-Klasse namens Person, die eine Personentabelle umschließt:

Nachdem ich die Verbindung zur Datenbank usw. eingerichtet habe, führe ich die Anweisung aus:

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

Die Personentabelle enthält (noch) keine Daten, also wenn ich drucke die Variable people, erhalte ich eine leere Liste.

Ich habe die Tabelle, auf die in meiner ORM-Klasse verwiesen wird, People in people_foo (der nicht existiert).

Ich führe dann das Skript erneut aus. Ich war überrascht, dass beim Versuch, auf eine nicht vorhandene Tabelle zuzugreifen, keine Ausnahme ausgelöst wurde.

Ich habe daher die folgenden 2 Fragen:

  1. Wie kann ich SQLAlchemy so einrichten dass es DB-Fehler zurück an das Skript weiterleitet?
  2. Wie kann ich die SQL anzeigen (dh drucken), die an die DB-Engine gesendet wird?

Falls es hilft, ich verwende PostgreSQL.

[Bearbeiten]

Ich schreibe ein Paket. In meinem __main__.py-Skript habe ich den folgenden Code (hier gekürzt):

### __main__.py import common # importiert die Protokollierung und definiert Protokollierungs-Setup-Funktionen 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. wenn nicht gesetzt, erfolgt keine Protokollierung" ) parser.add_option( " --level", dest="loglevel", metavar="LOG LEVEL", help="Debug-Level. Wenn nicht gesetzt, wird Level standardmäßig auf niedrig gesetzt" ) # Standardwerte setzen, wenn nicht angegeben, wenn nicht options.loglevel: loglevel = 1 sonst: loglevel = options.loglevel wenn nicht options.logfile: logfilename = "datafeed.log" sonst: logfilename = options.logfile common.setup_logger(False, logfilename, loglevel) # und so weiter ... #### dbfuncs. py Import-Protokollierung # nicht sicher, wie man sich an den Logger in __main__.py „binding“ anmeldet tLevel(logging.INFO) engine = create_engine("postgres://postgres:[email protected]:port/dbname", echo=True) 

[Edit2]

Common-Modul richtet den Logger korrekt ein und ich kann den Logger in meinen anderen Modulen verwenden, die Common importieren.

Aber im dbfuncs-Modul habe ich erhalte folgende Fehlermeldung/Warnung:

Für den Logger "sqlalchemy.engine.base.Engine

konnten keine Handler gefunden werden

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


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