Il est facile d'exécuter SQL avec Python et de générer le résultat dans Excel

J'ai récemment commencé à étudier Python Je pensais qu'il serait plus facile d'exécuter SQL avec Python et de générer le résultat dans Excel, alors je l'ai résumé.

C'est environ 50 lignes de code.

Choses à faire

  1. Exécutez SQL dans le dossier SQL dans l'ordre avec Python
  2. Sortie Excel du résultat de l'exécution SQL avec le même nom de fichier que SQL
  3. Assemblez Excel dans ZIP
  4. Mettez-le sur le serveur de fichiers

Environnement éprouvé

Préparation

Source / Exécuter

import mysql.connector
import datetime
import glob
import os
import pandas as pd
import csv
import pyminizip
import pathlib
import shutil

def exec():

    # 1.Exécution SQL en Python------------------------------------

    #Connexion DB
    conn = mysql.connector.connect(
       host = 'hôte',
       port = 'Port',
       user = 'Utilisateur',
       password = 'mot de passe',
       database = 'Base de données' 
    )    
        
    #Obtenir le fichier SQL
    os.chdir("Dossier SQL")
    sql_file_list = glob.glob("*.sql")
    
    #Créer le dossier
    now = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
    os.mkdir(now)

    #Exécution SQL
    for sql_file in sql_file_list:

        print(sql_file)        

        with open(sql_file, 'r') as f:
            sql_query = f.read()
    
        df = pd.read_sql_query(sql_query, con=conn) 

     # 2.Sortir le résultat dans Excel------------------------------------

        #Pour la sortie Excel
        df.to_excel(now + "\\" + sql_file.replace('.sql', '.xlsx'), sheet_name=sql_file.replace('.sql', ''), index=False)
            
        #Pour la sortie CSV
        df.to_csv(now + "\\" + sql_file.replace('.sql', '.csv'), encoding="utf-8_sig", quoting=csv.QUOTE_NONNUMERIC, index=False)

    os.chdir(now)
        
    #S'il y a une édition individuelle, je le ferai ici

    #Obtenir le fichier de résultats
    result_file_list = glob.glob("*.xlsx")    

    # 3.Faites-le ZIP------------------------------------

    #Compression du fichier de résultat(Nom de fichier japonais non pris en charge)
    file_path = []
    for i in range(len(result_file_list)):
        file_path.append('\\') 
    
    pyminizip.compress_multiple(result_file_list,file_path, now + '.zip','pass',0)
            
    # 4.Mettre sur le serveur de fichiers------------------------------------

    #Téléchargement du fichier de résultats
    share = pathlib.WindowsPath(r'serveur de fichiers' + now + '.zip')
    shutil.copyfile(now + '.zip', share)
            
    #Déconnecter
    conn.close()

#Courir
exec()

Recommended Posts

Il est facile d'exécuter SQL avec Python et de générer le résultat dans Excel
Obtenez de manière récursive la liste Excel dans un dossier spécifique avec python et écrivez-la dans Excel.
Exécuter du SQL brut avec redash à l'aide de la source de données Python et afficher le résultat
Comment saisir une chaîne de caractères en Python et la sortir telle quelle ou dans la direction opposée.
[Mac] Un moyen très simple d'exécuter des commandes système en Python et de générer les résultats
Un moyen simple de visualiser le temps pris en Python et un moyen plus intelligent de l'améliorer
Exportez le contenu de ~ .xlsx dans le dossier en HTML avec Python
Convertissez le résultat de python optparse en dict et utilisez-le
Comment utiliser is et == en Python
[Python] Doux Est-ce doux? À propos des suites et des expressions dans les documents officiels
Extraire le résultat de la commande TOP avec USER et le sortir au format CSV
Surveillance simple du serveur avec AWS Lambda (Python) et notification des résultats avec Slack
J'ai défini des variables d'environnement dans Docker et je les ai affichées en Python.
Lisez le fichier CSV avec Python et convertissez-le en DataFrame tel quel
À propos de la différence entre "==" et "is" en python
[Python] Comment nommer les données de table et les sortir avec csv (méthode to_csv)
Utilisez libsixel pour générer Sixel en Python et générer le graphe Matplotlib vers le terminal.
(Journal 1) Comment créer, parcourir et enregistrer des données dans la base de données SQL du service Microsoft Azure avec python
Une histoire sur un ingénieur qui a remarqué l'émo de la cryptographie et tente de l'implémenter en Python
Procédure pour charger MNIST avec python et sortie en png
Convertissez l'image au format .zip en PDF avec Python
Obtenez des résultats au format dict avec Python psycopg2
Lire le fichier json avec Python, le formater et générer le json
[Python] Comment afficher les valeurs de liste dans l'ordre
Utilisez tkinter pour déplacer le code de sortie en tant que "A et prétendant être B" en python
Le résultat de la création d'un album de cartes de jeunes mariés italiens en Python et de son partage
Sortie de la table spécifiée de la base de données Oracle en Python vers Excel pour chaque fichier
API Nifty Cloud facile à utiliser avec botocore et python
Essayez de le faire avec GUI, PyQt en Python
Après tout, il est faux de chat avec le sous-processus python.
Sortie "Dessiner fougère par programmation" dans le processus de dessin en Python
Changer la destination de sortie standard en un fichier en Python
En Python, les éléments de la liste sont triés et sortis sous forme d'éléments et de multiples.
Conseils pour coder courts et faciles à lire en Python
Facile avec juste Python! Affichez les figures Graphviz au format draw.io!
Orienté objet en langage C: "○ ✕ game" a été refacturé et porté en Python
Comment exécuter des commandes et des scripts shell externes en python
Installez CaboCha dans l'environnement Ubuntu et appelez-le avec Python.
Comment se connecter à AtCoder avec Python et soumettre automatiquement
J'ai créé une classe pour obtenir le résultat de l'analyse par MeCab dans ndarray avec python
[Super facile! ] Comment afficher le contenu des dictionnaires et des listes incluant le japonais en Python
C'était génial d'éditer le fichier Python dans Raspberry Pi avec la fonction à distance d'Atom
Renvoyez les données d'image avec Flask of Python et dessinez-les dans l'élément canvas de HTML
J'ai aussi essayé d'imiter la fonction monade et la monade d'état avec le générateur en Python
Si vous voulez mettre un argument dans la fonction de fermeture et l'exécuter plus tard
[Python] Qu'est-ce qu'un tuple? Explique comment utiliser sans toucher et comment l'utiliser avec des exemples.
Mettez Ubuntu dans Raspi, mettez Docker dessus et contrôlez GPIO avec python à partir du conteneur
[VLC] Comment gérer le problème de ne pas être au premier plan pendant la lecture
Un moyen simple d'accéder à l'API produit Amazon en Python
Comment est le progrès? Continuons le boom ?? en Python
traitement pour utiliser les données notMNIST en Python (et essayé de les classer)
Dans le dictionnaire python, si une clé inexistante est accédée, initialisez-la avec une valeur arbitraire
Comment installer OpenCV sur Cloud9 et l'exécuter en Python
Différence entre == et est en python
Un moyen facile d'arrondir après la virgule décimale en python3
Je veux résoudre APG4b avec Python (seulement 4.01 et 4.04 au chapitre 4)