Chào các bác, dạo này em đang làm việc với một dự án nhỏ cần lưu trữ dữ liệu dạng cấu trúc nhưng không muốn cài đặt các CSDL nặng nề như SQL Server hay MySQL. Sau khi tìm hiểu, em quyết định dùng SQLite, một CSDL nhẹ và lưu trữ dưới dạng file duy nhất. Tuy nhiên, việc cập nhật dữ liệu thủ công từ file SQLite vào Excel khá tốn thời gian.
Em đã mày mò và viết một đoạn script Python nhỏ để tự động hóa việc này. Mục đích là để mỗi lần chạy script, dữ liệu mới nhất từ bảng trong SQLite sẽ được ghi đè hoặc cập nhật vào một file Excel cụ thể.
Các bước chính em thực hiện như sau:
- Sử dụng thư viện
sqlite3để kết nối và truy vấn dữ liệu từ file.dbcủa SQLite. - Sử dụng thư viện
pandasđể đọc dữ liệu từ SQLite vào DataFrame. - Sử dụng phương thức
to_excelcủa pandas để ghi DataFrame ra file Excel. Em thường dùng tham sốindex=Falseđể không ghi chỉ số dòng của DataFrame vào Excel vàif_sheet_exists='replace'để ghi đè sheet nếu nó đã tồn tại.
Đây là đoạn code ví dụ (em đã lược bớt một số phần để dễ nhìn):
import sqlite3
import pandas as pd
DB_FILE = 'my_database.db'
EXCEL_FILE = 'report.xlsx'
TABLE_NAME = 'my_data'
SHEET_NAME = 'Data'
def update_excel_from_sqlite():
try:
conn = sqlite3.connect(DB_FILE)
query = f"SELECT * FROM {TABLE_NAME}"
df = pd.read_sql_query(query, conn)
conn.close()
with pd.ExcelWriter(EXCEL_FILE, engine='openpyxl', if_sheet_exists='replace') as writer:
df.to_excel(writer, sheet_name=SHEET_NAME, index=False)
print(f"Cập nhật dữ liệu thành công vào {EXCEL_FILE} - Sheet: {SHEET_NAME}")
except Exception as e:
print(f"Lỗi xảy ra: {e}")
update_excel_from_sqlite()
Cách này rất tiện lợi, đặc biệt khi dữ liệu nguồn thay đổi thường xuyên. Có bác nào đã từng làm tương tự với SQLite hoặc các CSDL file khác chưa? Chia sẻ thêm kinh nghiệm cho anh em với ạ!