[Python] Per gli esperti di sql

Riccardo Brazzale riccardo.brazzale a gmail.com
Gio 14 Maggio 2015 15:07:42 CEST


Ciao,

Mi connetto a un database mysql con mysql.connector ma potrebbe essere
qualsiasi altro motore DB. So che PG sarebbe passerebbe più innosservato in
questa ML :-)

Faccio una semplice sql:

sql = "SELECT * FROM table WHERE campo 1 = %s AND campo2 = %s"

curs.execute(sql, (var1, var2, ))

Fin qui tutto ok.

Ora ipotizziamo che l' sql stia all'interno di un ciclo che sta girando su
svariate centinaia di migliaia di combinazioni di var1 e var2 ed a un certo
punto fallisca in quanto var1 o var2 contengono valori che non vanno bene
per il rispettivo campo.

Come faccio a fare una cosa del tipo:

try:
    curs.execute(sql, (var1, var2, ))

except:

    print(ultima_istruzione_sql_eseguita)

in modo che ultima_istruzione_sql_eseguita sia
"SELECT * FROM table WHERE campo1 = 'ABCDEF' AND campo2 = '\x3BRGF'"?


Mettere nell'except una roba del tipo print(var1, var2) potrebbe starci se
hai 2 valori ma l'sql contiene in realtà centinaia di campi e avere la
stringa sql in chiaro risulterebbe (per me) più leggibile in quanto ha il
campo associato al valore.

Ho googlato in giro, qualcuno parla di cursor.statement ma a me non funza.

Grazie!



-- 
Riccardo Brazzale
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20150514/bdd9ae2d/attachment.html>


Maggiori informazioni sulla lista Python