[Python-de] Maskierung von %

Hartmut Goebel h.goebel at goebel-consult.de
Mo Feb 5 14:26:41 CET 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hallo Stefan,

> suchtext = "Python's Prozentzeichen"
> cursor.execute(
>   "SELECT text FROM table WHERE text LIKE '%%(suchtext)s%'",
>   {'suchtext': suchtext})  # vom DB-Adapter eingesetzt - besser

Sicher, dass Du das so willst? Denn falls der 'suchtext' ein
Leer-/Sonderzeichen enthält, wird er escaped. Dann bekommst Du diese query:

  ... LIKE '%'such mich'%' ...

Das ist sicher nicht das gewünschte :-)

Besser _alles_ Quoting dem Treiber überlassen, das kann das im
Zweifelsfall besser. Also:

suchtext = "Python's Prozentzeichen"
cursor.execute(
  "SELECT text FROM table WHERE text LIKE %(suchtext)s",
  {'suchtext': '%' + suchtext + '%' })


- --
Schönen Gruß - Regards
Hartmut Goebel

| Hartmut Goebel             | IT-Security -- effizient |
| h.goebel at goebel-consult.de | www.goebel-consult.de    |
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
Comment: Using GnuPG with Mandriva - http://enigmail.mozdev.org

iQEVAwUBRccwkczajR0mSa83AQKTOQgAgBzEaIMsSufn8b1CJoMk80LLZestubcj
z42+WYgpCKFclN9+NFkVAcksoWPXdBX4JwX/LXiM0uCHYU009lCKOPbtOLJqVrTC
k/iMoXuWvSWk31W0IysHdhgg0jBnBWogsqh0RzcMexzMCMBsMzx6z4H6c5gYweI6
0VdF89ia5gHHPqca3DErUrrMOcV5Uzcs9vpq3S0RN1fHCN0gcDwQo4qgRgdMCgMQ
aLNOlm0GL2I1mSALJj1skWVAr8wkNC4LaGY/z+gL86kA1LNVyQu1NOElFm00yT+Q
blRKI4bHCzfVFRVDrrRIP/nml/zSO12uLl+DRdH2Rgj/7Le0we4AMQ==
=5w97
-----END PGP SIGNATURE-----