[Python] Esclusione della query vuota

Simone Federici s.federici a gmail.com
Gio 11 Set 2014 10:38:37 CEST


> select cognome, nome, paese from rubrica where (cognome = '%s' OR nome =
'%s' OR paese = '%s'

se usi OR significa che nei risultatiti aspetti o i record con la città di
bologna oppure anche quelli che hanno un certo cognome.

solitamente si usa AND, perchè se un utente scrive sia la città che il
cognome vuole filtrare i risultati su entrambi.

inoltre si usa solitamente il LIKE e il lower.

detto questo, se vuoi interrogare il database con i soli campi inseriti
devi scrivere la query in passi successivi.

conditions = []
if cognome.get():
    conditions.append(("LOWER(cognome) = %s", cognome.get()))

if nome.get():
    conditions.append(("LOWER(nome) = %s", nome.get()))

if paese.get():
    conditions.append(("LOWER(paese) = %s", paese.get()))

if not conditions:
    conditions.append(("0=%s", 1))

sql = "select cognome, nome, paese from rubrica where %s" % " AND ".join([s
for s, v in contitions])
c.execute(sql, ['%%s%' % v.lower() for s, v in contitions if v])

PS.
non ti chiederò mai aiuto se avessi bisogno di un avvocato
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20140911/e66832e3/attachment.html>


Maggiori informazioni sulla lista Python