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
457 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!

source:php.cn
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