Maison >base de données >tutoriel mysql >Comment exécuter des requêtes SQL externes sur plusieurs tables en Python ?

Comment exécuter des requêtes SQL externes sur plusieurs tables en Python ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-02 17:32:38873parcourir

How to Execute External SQL Queries Against Multiple Tables in Python?

Exécuter des scripts SQL externes en Python

Vous travaillez actuellement à apprendre à exécuter des requêtes SQL dans Python et disposez d'un fichier SQL externe qui crée et manipule des données dans trois tables : « Zookeeper », « Handles » et « Animal ». De plus, le fichier contient une série de requêtes à exécuter sur ces tables.

La confusion survient lors de l'exécution de requêtes comme celles-ci à partir de Python :

--1.1

SELECT ANAME,zookeepid
FROM ANIMAL, HANDLES
WHERE AID=ANIMALID;
--1.2

SELECT ZNAME, SUM(TIMETOFEED)
FROM ZOOKEEPER, ANIMAL, HANDLES
WHERE AID=ANIMALID AND ZOOKEEPID=ZID
GROUP BY zookeeper.zname;

Ces requêtes sont ne pas créer de tableaux mais plutôt récupérer des données, ce qui nécessite une approche différente de celle de l'insertion ou de la suppression data.

Solution

Pour exécuter ces requêtes à partir de Python, vous pouvez utiliser le formatage de chaîne pour remplacer dynamiquement l'espace réservé du nom de table '%s' par le réel nom de la table que vous souhaitez interroger. Voici comment modifier votre code :

result = c.execute("SELECT * FROM {} WHERE {} != {} AND {} != {};".format(table, column1, value1, column2, value2))

Dans cet exemple, « {} » représente les espaces réservés pour la table, la colonne 1, la valeur1, la colonne2 et la valeur2. Vous pouvez ensuite remplacer ces espaces réservés par les valeurs appropriées en fonction de la requête que vous souhaitez exécuter.

Méthode alternative

Une méthode alternative que vous pourriez envisager consiste à définir une fonction qui prend le nom de la table et la requête en entrée, éliminant ainsi le besoin de formatage de chaîne. Cette approche offre plus de flexibilité et de lisibilité.

def execute_query(table, query):
    result = c.execute(query.format(table))
    # Do something with the results

for table in ['ZooKeeper', 'Animal', 'Handles']:
    query = "SELECT * FROM {} WHERE {} != {} AND {} != {};"
    execute_query(table, query)

Cette approche vous permet d'exécuter des requêtes basées sur différentes conditions sans modifier la requête elle-même.

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