- K pouziti, nebude to na webu pujde jen o filtr fora ktery se bude starat o jiste souvztaznosti. jednotlivych prispevku. No co je to PEP vubec nevim. Rad si necham poradit (nasel jsem toto http://www.python.org/dev/peps/pep-0249/ a to si v tydnu postupne prostuduji jen co se mi to povede nekde vytisknout) - Zda se ze charset v connection a mimo dela to same zrejme to slouzi ke cteni dat z tabulek s jinou znakovou sadou. Kazdopadne jsem si pridal charset do connect - pokud bych smel poprosit o priklad , jak by melo vypadat schema kdy prectu pomoci dotazu hodnotu a zase ji spravne ulozim ?
Ondrej Beranek Dne 18. leden 2009 15:30 Petr Messner <[email protected]> napsal(a): > Ahoj, > > execute("sql prikaz a v nem %s" % promennaOdUZivatele) neni osetreno > proti stavu, kdy v promenne budou apostrofy, natoz proti SQL > injection. Vola se to takto: execute("sql prikaz a v nem %s", > promennaOdUZivatele). Ono si to tu operaci "%" (cili naformatovani > nebo jak to chceme nazyvat) provede samo a zaroven to odescapuje > nebezpecne znaky. Viz prislusne PEP, tusim ze je to PEP 249. > > Mimochodem, informace o kodovani se da dat uz funkci MySQLdb.connect. > Databaze pak pracuje s a vraci unicode (tam kde je to relevantni). > conn.set_character_set() mozna dela to same, nevim. > > > Problem je, ze '\xa1[' neni validni retezec v kodovani UTF-8. Proto > nefunguje x.decode(). MySQL to mozna take neumi prevest do utf-8, > pokud to neukladas do blobu, ale do napr. textoveho sloupce s > kodovanim utf8, i kdyz ve tvem pripade je to spis tim, ze v c.execute > pouzivas operator %, jak jsem jiz psal, a tudiz problem s prevodem do > utf-8 je uz na strane Pythonu/db ovladace. > > > Snad jsem nic nepopletl, vyzkousel jsem si to :) Zdravim, > > PM > > Predpokladam, ze pracujeme v Python 2.x. > > 2009/1/18 Ondrej Beranek <[email protected]>: > > Tak jsem se dostal ve svem putovani Py svetem k dalsi zahade. > > > > pokousim se provest zapis do tabulky ovsem pokud string obsahuje nejake > > nevhodne znaky tak se to neprovede a prevest mi to proste nejde. > > > > provadim toto: > > > > import _mysql > > import MySQLdb > > > > conn = MySQLdb.connect (host = "localhost", > > user = "root", > > passwd = "", > > db = "databaze") > > > > conn.set_character_set('utf8') > > spojeni = conn.cursor () > > x='url=\xa1[img' > > > > spojeni.execute("UPDATE databaze.phpbb3_posts SET post_text = '%s' WHERE > > phpbb3_posts.post_id =637797 LIMIT 1 ;"%x) > > spojeni.close() > > > > a zde dostanu hlaseni > > "Warning: Incorrect string value: '\xA1[img' for column 'post_text' at > row > > 1" > > coz mi teda neni jasne string jako string. navic toto jsem z db prve > precetl > > a ted to potrebuju jen vratit zpet na puvodni misto ve tvaru v jakem to > tam > > bylo. > > > > No rekneme ze tedy neni slusne do databaze cpat unicode ovsem ono to > spadne > > i u prevodu > > > > print x.decode('utf-8') > > > > mi zakrici: UnicodeDecodeError: 'utf8' codec can't decode byte 0xa1 in > > position 4: unexpected code byte > > takze ted nejak nevim kudy kam. > > > > > > _______________________________________________ > > Python mailing list > > [email protected] > > http://www.py.cz/mailman/listinfo/python > > > _______________________________________________ > Python mailing list > [email protected] > http://www.py.cz/mailman/listinfo/python >
_______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python
