Re: [Python] Per gli esperti di sql
Il giorno 14 maggio 2015 15:07, Riccardo Brazzale riccardo.brazz...@gmail.com ha scritto: 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. Non sono un esperto, ma la cosa più comoda che ho trovato sperimentando è utilizzare un dizionario con i parametri: facile da manutenere e molto utile per capire dove ci sono gli errori. L'SQL si esegue così: cursor.execute(SELECT * FROM TABELLA WHERE PAR1=:par1 and PAR2=:par2, {'par1':'pippo', 'par2':1}) Ciao, Simone ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] Per gli esperti di sql
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 ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Per gli esperti di sql
Il 14/05/2015 15:30, simozack ha scritto: Il giorno 14 maggio 2015 15:07, Riccardo Brazzale riccardo.brazz...@gmail.com mailto:riccardo.brazz...@gmail.com ha scritto: 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. Non sono un esperto, ma la cosa più comoda che ho trovato sperimentando è utilizzare un dizionario con i parametri: facile da manutenere e molto utile per capire dove ci sono gli errori. L'SQL si esegue così: cursor.execute(SELECT * FROM TABELLA WHERE PAR1=:par1 and PAR2=:par2, {'par1':'pippo', 'par2':1}) Ciao, Simone ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python io ormai uso solo sqlalchemy .. in caso di errore ci pensa lui a darli il log con l'sql che si rompe .. ciao, Matteo --- Questa e-mail è priva di virus e malware perché è attiva la protezione avast! Antivirus. http://www.avast.com ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Per gli esperti di sql
Il 14/05/2015 15:07, Riccardo Brazzale ha scritto: 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'? Se prima del try ti crei la stringa? curr_sql = sql % (var1, var2) try: curs.execute(curr_sql) except: print curr_sql Magari mettici pure l'errore generato.. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Per gli esperti di sql
Il 14/mag/2015 21:32, Diego Barrera diegonebarr...@yahoo.it ha scritto: Se prima del try ti crei la stringa? curr_sql = sql % (var1, var2) try: curs.execute(curr_sql) except: print curr_sql Magari mettici pure l'errore generato.. bobby tables. © -- |:**THE BEER-WARE LICENSE** (Revision 42): | ca...@miron.it wrote this mail. As long as you retain | this notice you can do whatever you want with this stuff. | If we meet some day, and you think this stuff is worth it, | you can buy me a beer in return. |--Carlo Miron : ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python