Maison  >  Article  >  développement back-end  >  Comment transmettre des paramètres avec Pandas read_sql ?

Comment transmettre des paramètres avec Pandas read_sql ?

DDD
DDDoriginal
2024-11-01 22:42:02112parcourir

How to Pass Parameters with Pandas read_sql?

Passer des paramètres avec Pandas read_sql

Présentation

La fonction Pandas read_sql vous permet d'exécuter des requêtes SQL et de récupérer des données à partir d'une base de données. L'une de ses fonctionnalités est la possibilité de transmettre des paramètres à la requête.

Syntaxe des paramètres

Les paramètres peuvent être transmis sous forme de liste, de tuple ou de dict. La syntaxe exacte dépend du pilote de base de données utilisé. Voici quelques exemples courants :

  •  ? ou %s : espace réservé pour une valeur unique
  • :1 ou :name : espace réservé nommé pour une valeur unique
  • %(name)s : espace réservé nommé utilisant la syntaxe string.format

Utiliser un dictionnaire avec des arguments nommés

Une option pour transmettre des paramètres consiste à utiliser un dictionnaire. Ceci est pris en charge par la plupart des pilotes, y compris PostgreSQL avec le pilote psycopg2. Les paires clé-valeur du dictionnaire correspondent aux espaces réservés nommés dans la requête.

Exemple

Pour illustrer l'approche de l'argument nommé, considérons la requête SQL suivante :

<code class="sql">select "Timestamp", "Value" from "MyTable"
where "Timestamp" BETWEEN :dstart AND :dfinish</code>

Voici comment transmettre des paramètres à cette requête à l'aide d'un dictionnaire :

<code class="python">params = {"dstart": datetime(2014, 6, 24, 16, 0), "dfinish": datetime(2014, 6, 24, 17, 0)}

df = psql.read_sql(
    "select \"Timestamp\",\"Value\" from \"MyTable\" where \"Timestamp\" BETWEEN %(dstart)s AND %(dfinish)s",
    db,
    params=params,
    index_col=["Timestamp"],
)</code>

Dans cet exemple, le dictionnaire params fournit des valeurs pour les espaces réservés nommés :dstart et :dfinish. La syntaxe %(name)s garantit que les valeurs sont correctement insérées dans la requête.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn