"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment transmettre des paramètres avec Pandas read_sql ?

Comment transmettre des paramètres avec Pandas read_sql ?

Publié le 2024-11-08
Parcourir:188

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 :

select "Timestamp", "Value" from "MyTable"
where "Timestamp" BETWEEN :dstart AND :dfinish

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

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"],
)

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 insérées correctement dans la requête.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3