Debug (visualizzazione) Comando SQL inviato al db da SQLAlchemy

| | | |

Ho una classe ORM chiamata Person, che avvolge una tabella person:

Dopo aver impostato la connessione al db ecc, eseguo l'istruzione:

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

La tabella person non contiene dati (ancora), quindi quando stampo la variabile people, ottengo una lista vuota.

Ho rinominato la tabella a cui si fa riferimento nella mia classe ORM People, in people_foo code> (che non esiste).

Quindi eseguo di nuovo lo script. Sono rimasto sorpreso dal fatto che non sia stata generata alcuna eccezione durante il tentativo di accedere a una tabella che non esiste.

Ho quindi le seguenti 2 domande:

  1. Come posso configurare SQLAlchemy in modo che propaga gli errori db allo script?
  2. Come posso visualizzare (ovvero stampare) l'SQL che viene inviato al motore db?

Se aiuta, sto usando PostgreSQL.

[Modifica]

Sto scrivendo un pacchetto. Nel mio script __main__.py, ho il seguente codice (abbreviato qui):

### __main__.py import common # importa la registrazione e definisce le funzioni di configurazione della registrazione etc logger = logging.getLogger(__name__) def main(): parser = OptionParser(usage="%prog [opzioni] <commands>", version="%prog 1.0") comandi = OptionGroup(parser, "commands") parser.add_option( "-l", "--logfile", dest="logfile", metavar="FILE", help="log to FILE. se non impostato, non verrà eseguita alcuna registrazione" ) parser.add_option( " --level", dest="loglevel", metavar="LOG LEVEL", help="Livello di debug. se non impostato, il livello verrà impostato automaticamente su basso" ) # Imposta i valori predefiniti se non specificato altrimenti options.loglevel: loglevel = 1 else: loglevel = options.loglevel if not options.logfile: logfilename = "datafeed.log" else: logfilename = options.logfile common.setup_logger(False, logfilename, loglevel) # e così via ... #### dbfuncs. py import logging # non sono sicuro di come "associare" al logger in __main__.py logging.getLogger("sqlalchemy.engine").se tLevel(logging.INFO) engine = create_engine("postgres://postgres:[email protected]:port/dbname", echo=True) 

[Edit2]

Il modulo Common imposta correttamente il logger e posso utilizzare il logger negli altri moduli che importano common.

Tuttavia nel modulo dbfuncs, io ricevo il seguente errore/avviso:

Non è stato possibile trovare gestori per il logger "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