English

Tự động hóa việc INSERT dữ liệu vào database bằng Python: PyODBC


Tuesday, 20 February, 202472
Khi làm việc với MS SQL Server, một khó khăn thường gặp đối với data lớn là giới hạn của câu lệnh INSERT ... INTO. Trong 1 câu lệnh, chỉ được thêm tối đa 1000 dòng. Điều đó nghĩa là chúng ta phải viết nhiều lần nếu dữ liệu cần cập nhật rất lớn, gây tốn công sức.
Tự động hóa việc INSERT dữ liệu vào database bằng Python: PyODBC

Đã có một số phương pháp khắc phục được tình trạng này, như dùng While loop hoặc BULK INSERT của SQL chẳng hạn. Bản thân mình thì thấy phương án kết hợp với ngôn ngữ lập trình hiện đang phổ biến và cũng giải quyết vấn đề triệt để. Đặc biệt là Python khi đã có thư viện PyODBC.

1. PyODBC là gì?

pyodbc là một thư viện Python cho phép bạn kết nối và tương tác với cơ sở dữ liệu thông qua ODBC (Open Database Connectivity). Thư viện này cung cấp một API tiêu chuẩn để truy vấn và thao tác với các cơ sở dữ liệu khác nhau như SQL Server, MySQL, PostgreSQL, SQLite, Oracle, và nhiều loại cơ sở dữ liệu khác.
 

Một số đặc điểm chính của pyodbc như sau:

1. Kết nối CSDL: pyodbc cho phép bạn tạo kết nối tới cơ sở dữ liệu thông qua chuỗi kết nối (connection string). Chuỗi này chứa các thông tin cần thiết như tên máy chủ, cơ sở dữ liệu, tên người dùng, mật khẩu, và các tham số kết nối khác.

2. Thực hiện truy vấn: Bạn có thể thực hiện các truy vấn SQL để lấy dữ liệu, chèn, cập nhật, hoặc xóa dữ liệu trong cơ sở dữ liệu.

3. Xử lý kết quả: Kết quả của các truy vấn SQL được trả về dưới dạng các bộ dữ liệu mà bạn có thể duyệt và xử lý.

4. Transaction: pyodbc hỗ trợ thực thi transaction, cho phép bạn thực hiện các thao tác như BEGIN TRANSACTION, COMMIT, và ROLLBACK.

5. Tương thích đa nền tảng: pyodbc hoạt động trên nhiều hệ điều hành khác nhau như Windows, macOS, và Linux.

 

2. Tự động hóa như thế nào ?

Ý tưởng của giải pháp này là tận dụng vòng lặp for của Python để tạo script ghi tất cả các dòng vào Database. Để làm được điều này, chúng ta cần truyền vào hàm pyodbc.connect() một đoạn connection string (biến cnxt_str):

- DRIVER: (Hình 2) Cần lấy đúng tên Driver trong ODBC Data Source - 1 phần mềm đã cài sẵn với hệ điều hành Windows

- Server: (Hình 3) Tên SQL Server mà bạn đã tạo. Lưu ý là tùy loại Authentication config mà server này có thể có các tham số khác như username, password, user assigned identity, ...

- Database: (Hình 4) Tên database của bạn khi đã connect với server.

Tô Thanh Đức