Daniele Varrazzo ha scritto:
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:
         ...

Ok, man mano faccio progressi da solo. Format requires a mapping, traduzione: "Imbecille stai usando una formattazione da dizionario per una stringa!" Bene. Ma io non voglio usare un dizionario, voglio usare una semplice stringa! Devo cambiare il paramstyle? Come?

Sempre Grazie

P
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a