[python] Vkladani listu do SQL prikazu

Jan Janech devel na atlas.sk
Pátek Srpen 15 06:02:37 CEST 2008


Ahoj,

ako najjednoduchsie (a zaroven este ako tak rozumne) riesenie vidim:

tmp = ",".join(["%s"]*len(nejakylist))
cursor.execute("SELECT ....WHERE t.tagname IN ("+tmp+")", nejakylist).

Popripade, ak sa niekomu nepaci, ze sa tam robi zbytocny zoznam (napr. 
mne ;) ), tak to iste cez iteratory:

tmp = ",".join("%s" for polozka in nejakylist)
cursor.execute("SELECT ....WHERE t.tagname IN ("+tmp+")", nejakylist).

slush wrote:
> Zdravim vsechny,
> 
> nedavno se tu resilo, jakym zpusobem posilat promenne do SQL. Dostal 
> jsem se k podobnemu problemu - totiz jakym zpusobem vkladat do SQL ne 
> jednotlive retezce, ale cele listy. Uvedu priklad:
> 
> nejakylist = ['tag1', 'tag2']
> cursor.execute("SELECT ....WHERE t.tagname IN (%s)''', nejakylist)
> 
> Toto samozrejme nefunguje, protoze zastupna promenna "%s" hleda v 
> "nejakylist" pouze string, nikoliv list. Potreboval bych, aby se pole 
> "nejakylist" do SQL vlozilo s nasledujici syntaxi:
> 
> SELECT ....WHERE t.tagname IN ("tag1","tag2")
> 
> Tady konkretne to resim v Djangu (from django.db import connection), ale 
> myslim, ze to je dotaz i pro obecny Python.
> 
> Diky za kazde nakopnuti,
> Marek
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python


-- 

____________________________
Ing. Jan Janech
Katedra softverovych technologii
Fakulta riadenia a informatiky
Zilinska Univerzita


Další informace o konferenci Python