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.
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