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

Ci auguriamo che questo articolo ti abbia aiutato a risolvere il problema. Oltre a Debug (visualizzazione) Comando SQL inviato al db da SQLAlchemy, controlla altri argomenti relativi a around.

Vuoi eccellere in Python? Consulta la nostra recensione dei migliori corsi online Python 2022. Se sei interessato alla scienza dei dati, controlla anche come imparare a programmare in R.

A proposito, questo materiale è disponibile anche in altre lingue:



Javier Emmerson

Munchen | 2022-12-01

Forse ci sono altre risposte? Cosa significa esattamente Debug (visualizzazione) Comando SQL inviato al db da SQLAlchemy significa esattamente?. Controllato ieri, funziona!

Javier Sikorski

Texas | 2022-12-01

rename è tutto un po' confuso 😭 Debug (visualizzazione) Comando SQL inviato al db da SQLAlchemy non è l'unico problema che ho riscontrato. Spero solo che non emerga più

Carlo Wu

Boston | 2022-12-01

Mi stavo preparando per il mio colloquio di codifica, grazie per aver chiarito questo punto - Debug (visualizzazione) Comando SQL inviato al db da SQLAlchemy in Python non è il più semplice. Lo userò nella mia tesi di laurea

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

Common xlabel/ylabel for matplotlib subplots

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

12 answers

NUMPYNUMPY

Flake8: Ignore specific warning for entire file

12 answers

NUMPYNUMPY

glob exclude pattern

12 answers

NUMPYNUMPY

How to avoid HTTP error 429 (Too Many Requests) python

12 answers

NUMPYNUMPY

Python CSV error: line contains NULL byte

12 answers

NUMPYNUMPY

csv.Error: iterator should return strings, not bytes

12 answers

News


Wiki

Python | How to copy data from one Excel sheet to another

Common xlabel/ylabel for matplotlib subplots

Check if one list is a subset of another in Python

sin

How to specify multiple return types using type-hints

exp

Printing words vertically in Python

exp

Python Extract words from a given string

Cyclic redundancy check in Python

Finding mean, median, mode in Python without libraries

cos

Python add suffix / add prefix to strings in a list

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

Python - Move item to the end of the list

Python - Print list vertically