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!