[Python] query con MySQL

Daniele Varrazzo piro a develer.com
Sab 2 Feb 2008 11:36:54 CET


Crash Override ha scritto:
> Buongiorno.
> Dopo aver letto sulla documentazione la giusta sintassi per inserire una 
> stringa 'esterna' in una query MySQL con Python, scrivo (in un'oppurtuna 
> funzione):

Ciao,

aiuterebbe avere un po' più di contesto, ricordatene quando chiedi una mano :) 
Manda un paio di righe in più della funzione di cui parli: non solo la stringa 
SQL ma anche come la usi, perché il problema è (anche) lì.

> '''select qualcosa from qualcosaltro WHERE qualcosa = % (nomeStringa) s'''

di sicuro gli spazi in '% (nomeStringa) s' non servono. Questo non viene 
riconosciuto come segnaposto. Scrivi '%(nomeStringa)s'.

> dove nomeStringa lo prendo da un EvtText di una TextCtrl. Ecco... la 
> query non dà rsultati! Il nome (nomeStringa) esiste perchè se lo scrivo 
> io all'interno della query funziona! Inoltre ho provato a far stampare 
> in un wx.dialog il testo della TextCtrl: è tutto 'regolare'. Il problema 
> qualè? La TextCtrl aggiunge qualcosa che devo 'opportunamete' eliminare? 
> Non mi sembra...
> La stringa è presa da una funzione EvtText(evt) come evt.GetString().

Cos'è nomeStringa? Il nome di una variabile locale? Dovrebbe essere la chiave 
di un dizionario passato come secondo argomento al metodo execute() del 
cursore. Per intenderci da te ci si aspetta:

     cnn = MySQLdb.connect(dsn)
     cur = cnn.cursor()

     sql = '''select qualcosa from qualcosaltro
              WHERE qualcosa = %(nomeStringa)s'''
     args = { 'nomeStringa': 'mio valore' }

     cur.execute(sql, args)

     for record in cur:
         ...

-- 
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com


More information about the Python mailing list