Ich habe vor kurzem angefangen, Python zu studieren Ich dachte, es wäre einfacher, SQL mit Python auszuführen und das Ergebnis in Excel auszugeben, also fasste ich es zusammen.
Es sind ungefähr 50 Codezeilen.
import mysql.connector
import datetime
import glob
import os
import pandas as pd
import csv
import pyminizip
import pathlib
import shutil
def exec():
# 1.SQL-Ausführung in Python------------------------------------
#DB-Verbindung
conn = mysql.connector.connect(
host = 'Gastgeber',
port = 'Hafen',
user = 'Nutzer',
password = 'Passwort',
database = 'Datenbank'
)
#SQL-Datei abrufen
os.chdir("SQL-Ordner")
sql_file_list = glob.glob("*.sql")
#Ordner erstellen
now = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
os.mkdir(now)
#SQL-Ausführung
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.Geben Sie das Ergebnis in Excel aus------------------------------------
#Für die Excel-Ausgabe
df.to_excel(now + "\\" + sql_file.replace('.sql', '.xlsx'), sheet_name=sql_file.replace('.sql', ''), index=False)
#Für die CSV-Ausgabe
df.to_csv(now + "\\" + sql_file.replace('.sql', '.csv'), encoding="utf-8_sig", quoting=csv.QUOTE_NONNUMERIC, index=False)
os.chdir(now)
#Wenn es eine individuelle Bearbeitung gibt, werde ich es hier tun
#Ergebnisdatei abrufen
result_file_list = glob.glob("*.xlsx")
# 3.Machen Sie es ZIP------------------------------------
#Ergebnisdateikomprimierung(Japanischer Dateiname wird nicht unterstützt)
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.Legen Sie den Dateiserver an------------------------------------
#Hochladen der Ergebnisdatei
share = pathlib.WindowsPath(r'Dateiserver' + now + '.zip')
shutil.copyfile(now + '.zip', share)
#Trennen
conn.close()
#Lauf
exec()
Recommended Posts