sql_to_xlsx/main.py
2025-01-21 19:43:56 +01:00

92 lines
2.5 KiB
Python

import mysql.connector
from openpyxl import Workbook
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email import encoders
import os
def perform_query(query, db_config):
try:
connection = mysql.connector.connect(**db_config)
cursor = connection.cursor()
cursor.execute(query)
results = cursor.fetchall()
column_headers = [i[0] for i in cursor.description]
return results, column_headers
except mysql.connector.Error as e:
print(f"Error: {e}")
finally:
if connection.is_connected():
cursor.close()
connection.close()
def write_to_excel(data, headers, file_name):
workbook = Workbook()
sheet = workbook.active
sheet.append(headers)
for row in data:
sheet.append(row)
workbook.save(file_name)
print(f"Excel file saved as {file_name}")
def send_email(subject, body, recipient_email, sender_email, sender_password, file_path):
try:
msg = MIMEMultipart()
msg['From'] = sender_email
msg['To'] = recipient_email
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain'))
with open(file_path, 'rb') as attachment:
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header(
'Content-Disposition',
f'attachment; filename={os.path.basename(file_path)}'
)
msg.attach(part)
with smtplib.SMTP('smtp.eu.mailgun.org', 587) as server:
server.starttls()
server.login(smtp_user, smtp_password)
server.send_message(msg)
print("Email sent!")
except Exception as e:
print(f"Error: {e}")
if __name__ == "__main__":
db_config = {
'host': '192.168.145.196',
'user': 'sql_to_xlsx',
'password': '2Uce5Uc5',
'database': 'smsgw_control'
}
sql_query = "SELECT mcc AS MCC, mnc AS MNC, route, price FROM smsgw_control.routingprices WHERE route = 'M1' AND clientid = '13283';"
results, headers = perform_query(sql_query, db_config)
excel_file_name = "pricelist.xlsx"
write_to_excel(results, headers, excel_file_name)
email_subject = "Your subject"
email_body = "Please find attached bla bla"
recipient = "mark@42tele.com"
sender = "zobbi@sender.com"
send_email(email_subject, email_body, recipient, sender, excel_file_name)