[Python-de] Maskierung von %
Paul Rauch
LightLan at lightlan.de
Fr Feb 2 18:48:52 CET 2007
Stefan Schwarzer schrieb:
> Hi Volker,
>
> On 2007-02-02 14:09, Volker Helm wrote:
>> Da im Text häufiger ein "wert like '%suchbegriff%'" steht,
>> müsste ich immer dieses Sonderzeichen eintragen, das ist mühsam
>> und unleserlich :(
>
> dazu noch ein Hinweis: Setze den Suchbegriff als Argument
> in cursor.execute ein. Dadurch werden Zeichen, die in SQL
> Sonderzeichen sind (vor allem ' , bei manchen SQL-Dialekten
> auch \), richtig maskiert.
>
> Also nicht
>
> suchtext = "Python's Prozentzeichen"
> cursor.execute(
> "SELECT text FROM table WHERE text LIKE '%%%s%%'" %
> suchtext) # selbst eingesetzt - unsicher
>
> sondern
>
> suchtext = "Python's Prozentzeichen"
> cursor.execute(
> "SELECT text FROM table WHERE text LIKE '%%(suchtext)s%'",
> {'suchtext': suchtext}) # vom DB-Adapter eingesetzt - besser
>
> Beachte, dass hier der execute-Methode zwei Argumente übergeben
> werden. Außerdem musst du die Prozentzeichen am Anfang und Ende
> des Strings nicht verdoppeln (wenn der Datenbankadapter sauber
> programmiert ist). Wie einzusetzende Zeichenketten zu formatieren
> sind und wie das zweite Argument von cursor.execute aussehen
> muss, hängt vom konkreten Datenbankadapter ab. Näheres in der
> DB-API 2.0, an die sich alle neueren Adapter halten sollten,
> http://www.python.org/dev/peps/pep-0249/ , und der Doku zum von
> dir verwendeten Datenbankadapter.
>
> Viele Grüße
> Stefan
>
hm..
dass verstehe ich ehrlich gesagt nicht.
ich will doch nicht das ganze query escapen, sondern nur bestimmte
einzelne eingaben von usern.
mfg Light Lan
Mehr Informationen über die Mailingliste python-de