<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Daniele Varrazzo ha scritto:
<blockquote cite="mid:47A447C6.2040603@develer.com" type="cite">
  <pre wrap="">Crash Override ha scritto:
  </pre>
  <blockquote type="cite">
    <pre wrap="">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):
    </pre>
  </blockquote>
  <pre wrap=""><!---->
Ciao,

aiuterebbe avere un po' pi&ugrave; di contesto, ricordatene quando chiedi una mano :) 
Manda un paio di righe in pi&ugrave; della funzione di cui parli: non solo la stringa 
SQL ma anche come la usi, perch&eacute; il problema &egrave; (anche) l&igrave;.

  </pre>
  <blockquote type="cite">
    <pre wrap="">'''select qualcosa from qualcosaltro WHERE qualcosa = % (nomeStringa) s'''
    </pre>
  </blockquote>
  <pre wrap=""><!---->
di sicuro gli spazi in '% (nomeStringa) s' non servono. Questo non viene 
riconosciuto come segnaposto. Scrivi '%(nomeStringa)s'.

  </pre>
  <blockquote type="cite">
    <pre wrap="">dove nomeStringa lo prendo da un EvtText di una TextCtrl. Ecco... la 
query non d&agrave; rsultati! Il nome (nomeStringa) esiste perch&egrave; se lo scrivo 
io all'interno della query funziona! Inoltre ho provato a far stampare 
in un wx.dialog il testo della TextCtrl: &egrave; tutto 'regolare'. Il problema 
qual&egrave;? La TextCtrl aggiunge qualcosa che devo 'opportunamete' eliminare? 
Non mi sembra...
La stringa &egrave; presa da una funzione EvtText(evt) come evt.GetString().
    </pre>
  </blockquote>
  <pre wrap=""><!---->
Cos'&egrave; 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:
         ...

  </pre>
</blockquote>
Ok, man mano faccio progressi da solo. Format requires a mapping,
traduzione: "Imbecille stai usando una formattazione da dizionario per
una stringa!"<br>
Bene. Ma io non voglio usare un dizionario, voglio usare una semplice
stringa! Devo cambiare il paramstyle? Come?<br>
<br>
Sempre Grazie<br>
<br>
P<br>
</body>
</html>