Tạo báo cáo từ cơ sở dữ liệu SQL là một nhiệm vụ phổ biến ở nhiều Doanh nghiệp. Tuy nhiên, quá trình này có thể tốn thời gian và dễ xảy ra lỗi, đặc biệt nếu nó liên quan đến việc trích xuất, chuyển đổi và định dạng dữ liệu thủ công.

Trong bài viết này, VietnamWorks inTECH sẽ hướng dẫn bạn cách sử dụng Python để tự động hóa quá trình tạo báo cáo từ cơ sở dữ liệu SQL, giúp giảm thiểu thời gian và công sức.

Điều kiện bắt buộc

  • Python 3.x

  • Cơ sở dữ liệu SQL như MySQL hoặc PostgreSQL

  • Thư viện Python để truy cập cơ sở dữ liệu SQL như psycopg2 hoặc mysql-connector-python

  • Thư viện Python để tạo báo cáo như ReportLab hoặc PyPDF2

Kết nối với cơ sở dữ liệu SQL

Bước đầu tiên là kết nối với cơ sở dữ liệu SQL bằng Python. Chúng ta sẽ sử dụng thư viện psycopg2 để kết nối với cơ sở dữ liệu PostgreSQL.

Dưới đây là đoạn code ví dụ:

import psycopg2

conn = psycopg2.connect(
    host="localhost",
    database="mydatabase",
    user="myusername",
    password="mypassword"
)

Lưu ý: thay thế các giá trị trong các tham số host, database, userpassword bằng các giá trị thích hợp cho cơ sở dữ liệu của bạn.

Truy xuất dữ liệu từ cơ sở dữ liệu SQL

Khi thiết lập kết nối với cơ sở dữ liệu SQL thành công, chúng ta có thể thực hiện các truy vấn SQL để truy xuất dữ liệu cần cho báo cáo.

Đây là đoạn code ví dụ để truy xuất dữ liệu từ cơ sở dữ liệu PostgreSQL:

cur = conn.cursor()

cur.execute("SELECT name, email, phone FROM customers")

rows = cur.fetchall()

Đoạn code này lấy tên, email và số điện thoại của tất cả khách hàng trong bảng customers.

Tạo báo cáo

Tiếp theo, chúng ta cần tạo báo cáo bằng thư viện Python như ReportLab hoặc PyPDF2. Dưới đây là ví dụ để tạo báo cáo PDF bằng ReportLab:

from reportlab.pdfgen import canvas

# Create a new PDF document
pdf = canvas.Canvas("report.pdf")

# Write the report title
pdf.setFont("Helvetica-Bold", 16)
pdf.drawString(50, 750, "Customer Report")

# Write the report content
pdf.setFont("Helvetica", 12)
y = 700
for row in rows:
    pdf.drawString(50, y, "Name: " + row[0])
    pdf.drawString(50, y - 20, "Email: " + row[1])
    pdf.drawString(50, y - 40, "Phone: " + row[2])
    y -= 60

# Save the PDF document
pdf.save()

Lệnh này tạo một tài liệu PDF mới, tiêu đề báo cáo và lặp qua dữ liệu được lấy từ cơ sở dữ liệu SQL để viết nội dung báo cáo. Báo cáo PDF cuối cùng được lưu dưới dạng tệp report.pdf

Tự động hóa quy trình tạo báo cáo

Tự động hóa quy trình tạo báo cáo bằng lệnh:

import psycopg2
from reportlab.pdfgen import canvas

# Connect to the SQL database
conn = psycopg2.connect(
    host="localhost",
    database="mydatabase",
    user="myusername",
    password="mypassword"
)

# Retrieve the data from the SQL database
cur = conn.cursor()
cur.execute("SELECT name, email, phone FROM customers")
rows = cur.fetchall()

# Create the report
pdf = canvas.Canvas("report.pdf")
pdf.setFont("Helvetica-Bold", 16)
pdf.drawString(50, 750, "Customer Report")
pdf.setFont("Helvetica", 12)
y = 700
for row in rows:
pdf.drawString(50, y, "Name: " + row[0])
pdf.drawString(50, y - 20, "Email: " + row[1])
pdf.drawString(50, y - 40, "Phone: " + row[2])
y -= 60
pdf.save()
#close the database connection
cur.close()
conn.close()

Lệnh này kết nối với cơ sở dữ liệu SQL, truy xuất dữ liệu, tạo báo cáo và lưu dưới dạng tệp report.pdf. Sau đó, bạn có thể chạy tập lệnh này thường xuyên để tạo báo cáo tự động.

Như vậy, chỉ với vài bước đơn giản bạn đã có thể tự động tạo report từ cơ sở dữ liệu SQL bằng Python, giúp tiết kiệm thời gian để tập trung vào các nhiệm vụ quan trọng khác.

VietnamWorks inTECH