[Tutor PyCZ] Problem s formatovanim

Petr Hlávka petrhlavka na gmail.com
Středa Červenec 26 07:26:17 CEST 2006


Dobry den,

On 7/25/06, slacker <slacker na inmail.cz> wrote:
> users = cursor.execute("SELECT user FROM table  WHERE user = '%s'" % test)
>

mel bych jenom drobnou poznamku, z bezpecnostnich duvodu (SQL
injection) by prikaz mel vypadat spise takto:

users = cursor.execute("SELECT user FROM table  WHERE user = %s", (test,))

kdy primo DBAPI provede escape vsech specialnich znaku...

  S pozdravem Petr Hlavka.



> preju hezky den.
>
>
> smoke wrote:
> > Zdravim,
> >
> > narazil sem na jeden problem, ktery se mi bohuzel nedari vyresit.
> > Neznate prosim nekdo reseni?
> >
> > O co jde:
> >
> > Pomoci modulu MySQLdb provadim select z db. Problem nastane tehdy, kdy
> > pomoci formatovani do selectu dosadim promenou:
> >
> > import MySQLdb
> >
> > conn = MySQLdb.connect (host = "host",
> >                            user = "user",
> >                            passwd = "******",
> >                            db = "db")
> >
> > cursor = conn.cursor()
> > test = "user1"
> > users = cursor.execute("SELECT user FROM table  WHERE user = '%s'")    %
> > test
> > ....
> >
> > a zde to bohuzel vyhodi tuto chybu:
> > TypeError: unsupported operand type(s) for %: 'long' and 'str'
> >
> > Vypada to jako drobnost ;o), ale nedari se mi na ni prijit - diky za
> > kazdou radu nebo nasmerovani.
>
>
> _______________________________________________
> Tutor mailing list
> Tutor na py.cz
> http://www.py.cz/mailman/listinfo/tutor
>


Další informace o konferenci Tutor