[python] Vkladani listu do SQL prikazu

2008-08-14 Tema obsahu slush
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@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Vkladani listu do SQL prikazu

2008-08-14 Tema obsahu Tomas Brabenec
nakopnu ;-)

code
[tag for tag in nejakylist]
/code

Tomas


Dne 14.8.2008 14:40, slush napsal(a):
 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@py.cz
 http://www.py.cz/mailman/listinfo/python
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Vkladani listu do SQL prikazu

2008-08-14 Tema obsahu azurIt
je to trochu salamunske riesenie, ale napada ma toto (neskusal som, mozno sa 
tam objavi nejaky problem):

from string import join

cursor.execute(SELECT WHERE t.tagname IN (%s), join(nejakylist, ',') )

tzn. urobis z toho listu nieco ako tag1','tag2','tag3 a toto nasledne hodis 
MySQLdb. ten by to tam mal vlozir ako 'tag1','tag2','tag3' (teda na zaciatok a 
na koniec prida ' )


-Pôvodná správa-
Od: slush [EMAIL PROTECTED]
Komu: Konference PyCZ 
Predmet: [python] Vkladani listu do SQL prikazu



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@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Vkladani listu do SQL prikazu

2008-08-14 Tema obsahu slush

  [tag for tag in nejakylist]


Tohle jsem mozna nepochopil. Nevim, co bych tim mel ziskat.

 cursor.execute(SELECT WHERE t.tagname IN (%s), join(nejakylist,
',') )

tohle je samozrejme prvni vec, ktera me napadla. Problem je SQL injection.
Muselo by se to resit manualne a ja neverim, ze to sql rozhrani s moznosti
listu nepocita.

 prevedte list na string a oholte mu ty hranaté závorky

Tohle reseni je zajimave! Jen ne moc elegantni :). No pokud se nepovede nic
lepsiho, zkusim to touhle cestou.

Zatim,
Marek
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Vkladani listu do SQL prikazu

2008-08-14 Tema obsahu slush

  prevedte list na string a oholte mu ty hranaté závorky

 Tohle reseni je zajimave! Jen ne moc elegantni :). No pokud se nepovede nic
 lepsiho, zkusim to touhle cestou.


Tak ne, tohle neni cesta, kterou bych se chtel vydat. Pripada mi, ze vstup
od uzivatele by mel byt osetreny robustneji nez nejake hratky s orezavanim
stringu.

Jeden z prvnich problemu, na ktery jsem totiz narazil byl napriklad list
unicode stringu. Tam to nefungovalo a vyzadovalo by to dalsi hacky.

Marek
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python