Không ngờ import dữ liệu từ SQL Server vào Python lại đơn giản như vậy!#
Trong quá trình làm việc, ngoài tiếp nhận dữ liệu từ các nguồn truyền thống như file Excel/CSV do các phòng ban gửi về hoặc xuất từ hệ thống cho những báo cáo đơn giản. Ở cấp độ cao hơn, sau khi tiếp nhận và xử lí dữ liệu, chúng ta sẽ quản lí dữ liệu trên database của riêng mình hoặc database của team, do đó việc kết nối Python với database là rất cần thiết để tự động hóa việc trích xuất dữ liệu và tiết kiệm thời gian.
Trong bài viết hôm nay mình sẽ hướng dẫn các bạn kết nối với SQL Server, hệ quản trị cơ sở dữ liệu phổ biến được sử dụng cho các bạn tự quản lí dữ liệu ở quy mô nhỏ vì miễn phí và cài đặt đơn giản.
Nếu thấy bài viết hữu ích, hãy follow group của mình để nhận thông tin về bài viết mới.
Import thư viện#
Một cách mà mình thấy đơn giản để kết nối SQL Server là sử dụng thư viện pyodbc.
Bạn nào chưa cài, thì có thể cài trực tiếp trên notebook bằng lệnh:
!pip install pyodbc
!pip install pyodbc
Collecting pyodbc
Downloading pyodbc-5.1.0-cp311-cp311-win_amd64.whl.metadata (2.8 kB)
Downloading pyodbc-5.1.0-cp311-cp311-win_amd64.whl (68 kB)
---------------------------------------- 0.0/68.7 kB ? eta -:--:--
----------- ---------------------------- 20.5/68.7 kB 640.0 kB/s eta 0:00:01
---------------------------------------- 68.7/68.7 kB 928.6 kB/s eta 0:00:00
Installing collected packages: pyodbc
Successfully installed pyodbc-5.1.0
[notice] A new release of pip is available: 24.0 -> 24.2
[notice] To update, run: python.exe -m pip install --upgrade pip
import pandas as pd
import numpy as np
import pyodbc
Tạo connection:#
Đầu tiên, để lấy dữ liệu từ database, chúng ta cần tạo connection tới database:
con = pyodbc.connect('driver={SQL Server};server=localhost;database=tutorial')
Sau khi tạo connection, chúng ta có thể thực hiện query dữ liệu vào dataframe trên pandas bằng lệnh read_sql:#
Chúng ta sẽ truyền vào hàm 2 tham số:
sql: câu query
con: connection mà ta dùng để kết nối tới database
data = pd.read_sql(sql = 'select top 10 * from customer', con=con )
C:\Users\admin\AppData\Local\Temp\ipykernel_10368\3178502764.py:1: UserWarning: pandas only supports SQLAlchemy connectable (engine/connection) or database string URI or sqlite3 DBAPI2 connection. Other DBAPI2 objects are not tested. Please consider using SQLAlchemy.
data = pd.read_sql(sql = 'select top 10 * from customer', con=con )
Kiểm tra kết quả:#
data.head()
| Id | FirstName | LastName | City | Country | Phone | |
|---|---|---|---|---|---|---|
| 0 | 1 | Maria | Anders | Berlin | Germany | 030-0074321 |
| 1 | 2 | Ana | Trujillo | México D.F. | Mexico | (5) 555-4729 |
| 2 | 3 | Antonio | Moreno | México D.F. | Mexico | (5) 555-3932 |
| 3 | 4 | Thomas | Hardy | London | UK | (171) 555-7788 |
| 4 | 5 | Christina | Berglund | Luleå | Sweden | 0921-12 34 65 |
Vậy là chúng ta đã kết nối và query thành công dữ liệu từ SQL Server. Lưu ý: đây là hướng dẫn concept đơn giản, trên thực tế tùy vào mạng nội bộ của công ty, hoặc chính sách bảo mật, bạn có thể phải truyền thêm các tham số như IP, port, authentication,…