[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
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
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
[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
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