[gull] Requêtes SQL en LIKE ...% avec psycopg3

Philippe Strauss philippe at straussaudio.ch
Mon Apr 22 16:55:00 CEST 2024


Ouhlà l'ortographe, désolé.

Dans ma DB j'ai par exemple:

diskpix=> select myco.genus.name from myco.genus where myco.genus.name 
LIKE 'AMA%';
       name
-----------------
  AMAMITA
  AMANITA
  AMANITA (OPSIS)
  AMANITHA
  AMANITOPSIS
  AMAUROCHAETE
  AMAURODON
(7 rows)

On 4/22/24 4:47 PM, Philippe Strauss via gull wrote:
> Je suis en train d'écrire en python une toute petite API JSON pour une 
> appli. web d'archive de photos mycologique.
> En support à l'API principale, j'ai deux petites partie qui permettent 
> un autocomplete d'une formulaire de recherche
> par genre et espèce.
>
> Le code (pour le framework Flask) d'un de ces support d'autocomplete est:
>
> --8<--
> @app.route('/genus/<genus>')
> def genus(genus):
>     with dbconn.cursor() as cur:
>         cur.execute("""SELECT myco.genus.name
>             FROM myco.genus
>             WHERE myco.genus.name LIKE %s""", (genus.upper()+'%',))
>         lsgenus = cur.fetchall()
>         ls = []
>         for genus in lsgenus:
>             ls.append(genus[0])
>     return jsonify(ls)
> --8<--
>
> Quel est la manière la plus appropriée d'exprimer la requête en LIKE 
> ...% en SQL, avec psycopg3?
> Mon code si dessus est-il safe en terme de SQL-injection?
> Qu'en pensent ceux qui sont déjà passé par là?
>
-- 
Philippe Strauss
https://straussengineering.ch/



More information about the gull mailing list