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