Maison > base de données > tutoriel mysql > Comment puis-je exécuter efficacement des requêtes SQL à partir d'un fichier externe en Python ?

Comment puis-je exécuter efficacement des requêtes SQL à partir d'un fichier externe en Python ?

Susan Sarandon
Libérer: 2024-12-29 22:35:10
original
499 Les gens l'ont consulté

How Can I Efficiently Execute SQL Queries from an External File in Python?

Interrogation d'un fichier SQL externe en Python

Confusion :

Lors de l'exécution de requêtes SQL à partir d'un fichier externe, certains développeurs peuvent être confus par les lignes comme :

result = c.execute("SELECT * FROM %s;" % table);
Copier après la connexion

Explication :

Le formatage de chaîne en Python nous permet de remplacer dynamiquement les espaces réservés (%s) par des valeurs. Dans ce cas, %s est remplacé par la valeur de la variable de table, qui est une chaîne représentant le nom de la table. Ainsi, si la table est « Animal », la requête devient « SELECT * FROM Animal ; ».

Utilisation du code fourni :

Le code Python fourni inclut une fonction executeScriptsFromFile qui peut être utilisé pour exécuter toutes les commandes SQL dans un fichier externe.

def executeScriptsFromFile(filename):
    with open(filename, 'r') as fd:
        sqlFile = fd.read()
    sqlCommands = sqlFile.split(';')

    for command in sqlCommands:
        try:
            c.execute(command)
        except OperationalError as msg:
            print("Command skipped: ", msg)
Copier après la connexion

Vous pouvez utiliser cette fonction pour exécuter le SQL requêtes dans votre fichier zookeeper.sql :

executeScriptsFromFile('zookeeper.sql')
Copier après la connexion

Requêtes 1.1 et 1.2 :

Les requêtes 1.1 et 1.2 sont déjà incluses dans le fichier zookeeper.sql. Le code ci-dessus les exécutera lorsque le fichier sera chargé.

Code complet :

En combinant la fonctionexecuteScriptsFromFile et le code de boucle de table, votre code Python complet peut être simplifié comme suit :

import sqlite3
from sqlite3 import OperationalError

conn = sqlite3.connect('csc455_HW3.db')
c = conn.cursor()

executeScriptsFromFile('zookeeper.sql')

for table in ['ZooKeeper', 'Animal', 'Handles']:
    result = c.execute("SELECT * FROM %s;" % table)
    rows = result.fetchall()
    print("\n--- TABLE ", table, "\n")
    for desc in result.description:
        print(desc[0].rjust(22, ' '), end=',')
    print()  # End the line with column names

    for row in rows:
        for value in row:
            print(str(value).rjust(22, ' '))
        print()

c.close()
conn.close()
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal