Có một số gói Python có giao diện với cơ sở dữ liệu SQL. Trong vài tuần qua, tôi đã sử dụng mô-đun psycopg2 để tương tác với các hệ thống quản lý cơ sở dữ liệu PostgreSQL. Bạn có thể sử dụng các thư viện Python trên dữ liệu thu được từ các truy vấn SQL. Chẳng hạn, thư viện Pandas có các phương thức riêng cho phép chúng tôi hiển thị và thao tác kết quả của truy vấn trực tiếp từ cơ sở dữ liệu SQL. Trong bài viết này tôi sẽ trình bày chi tiết quá trình thiết lập psycopg2 và xây dựng chức năng truy vấn bằng các công cụ này
Phần 1. Cách thiết lập Psycopg2Điều kiện tiên quyết. Trước khi cố gắng cài đặt bộ điều hợp Python, bạn phải cài đặt Postgres mà tôi đã trình bày chi tiết trong bài viết trước
Psycopg là bộ điều hợp PostgreSQL cho ngôn ngữ lập trình Python. Công cụ này cho phép chúng tôi kết nối các khả năng của ngôn ngữ Python và thư viện để lấy, thao tác, nhập và cập nhật dữ liệu được lưu trữ trong cơ sở dữ liệu PostgreSQL. Tại thời điểm viết bài này, phiên bản hiện tại là psycopg2. Khi lần đầu tiên tìm kiếm gói này, tôi đã được chuyển đến trang web PyPI của dự án. Tôi tự nhiên quyết định sử dụng hệ thống quản lý gói pip mặc định để cài đặt, tuy nhiên, nhiều phụ thuộc của Psycopg không được bao gồm. Theo tài liệu, “Psycopg là một trình bao bọc C xung quanh thư viện máy khách libpq PostgreSQL. ” Bên dưới tiêu đề này, các phụ thuộc được bao gồm. Ban đầu, tôi đã thử cài đặt các phần phụ thuộc này và gặp phải những khó khăn giống như người dùng trên StackOverflow và GitHub của dự án đã phàn nàn về
Rất may, tôi tình cờ thấy một câu trả lời đề xuất quy trình cài đặt Homebrew. Mặc dù tôi đã cài đặt Ứng dụng Postgres, một thư mục chứa một hoặc nhiều phần phụ thuộc của psycopg2 đã bị thiếu. Trong thiết bị đầu cuối, tôi đã chạy lệnh brew install postgresql
để cài đặt triển khai Homebrew của PostgreSQL và sau đó chạy lệnh pip install psycopg2
để cài đặt lại bộ điều hợp Python. Sau khi hoàn thành hai bước này, tôi đã có thể sử dụng thành công Psycopg
Có một số cách để kết nối với cơ sở dữ liệu PostgreSQL, ba phương pháp là kết nối trực tiếp thông qua PostgresApp/terminal/dòng lệnh, kết nối trong một tập lệnh hoặc tệp Python [i. e. Jupyter Notebook] và kết nối bằng cách nhập các tham số cần thiết từ tệp khởi tạo hoặc tệp cấu hình. Tùy chọn thứ ba phù hợp nhất khi bạn muốn ẩn thông tin đăng nhập của mình bằng tệp .gitignore
Bạn cần một vài tham số để kết nối với bất kỳ cơ sở dữ liệu nào. Một số tham số phổ biến là máy chủ, cổng, tên người dùng và mật khẩu. Cơ sở dữ liệu PostgreSQL có thể được lưu trữ trên máy tính của bạn [được truy cập bằng localhost làm giá trị của tham số máy chủ] hoặc từ xa [được truy cập bằng I của máy chủ. P. address làm giá trị của tham số máy chủ]. Bạn cũng sẽ cần một số cổng, xác định quy trình đang chạy trên máy chủ mà yêu cầu của máy khách sẽ được gửi tới. Cổng mặc định của PostgreSQL là 5432, mặc dù cổng này có thể thay đổi. Bạn cũng có thể cần tên người dùng và mật khẩu nếu có quyền bảo mật;
Cảnh tham dự trong “Ngày nghỉ của Ferris Bueller” [1986]. Ferris Bueller cập nhật từ xa hồ sơ điểm danh của anh ấy được lưu trữ trong cơ sở dữ liệu trên máy chủ của trường anh ấy. Bueller đã đánh cắp thông tin đăng nhập của người dùng có quyền cần thiết để cập nhật hồ sơ của anh ta hoặc máy chủ đã cho phép truy cập vào bất kỳ máy khách nào[1] Kết nối trực tiếp với PostgresApp/Terminal/Command Line
PostgreSQL khi mở lần đầu tiên. Lưu ý dấu cộng [+] ở góc dưới bên trái của hình ảnh
PostgresApp cho phép bạn kết nối trực tiếp với cơ sở dữ liệu được lưu trữ cục bộ hoặc từ xa bằng cách sử dụng menu Tạo máy chủ mới có thể được truy cập bằng biểu tượng dấu cộng [+] nằm ở góc dưới cùng bên trái của cửa sổ. Bạn cũng có thể nhấp vào cơ sở dữ liệu có sẵn để khởi tạo trình bao PostgreSQL trong cửa sổ đầu cuối mới, nút khởi tạo hoặc bắt đầu phải được kích hoạt
Bạn cũng có thể truy cập máy chủ thông qua dòng lệnh hoặc thiết bị đầu cuối. Nếu bạn mở một cửa sổ đầu cuối mới [bên ngoài trình bao PostgreSQL nếu Ứng dụng đang chạy], bạn có thể nhập lệnh để khởi tạo PostgreSQL, sau đó là các tham số cho cơ sở dữ liệu. Để bắt đầu PostgreSQL, bạn gõ /Applications/Postgres.app/Contents/Versions/12/bin/psql
hoặc psql
nếu bạn đã thiết lập phím tắt. Trong cùng một dòng, bạn có thể nhập các tham số bổ sung như máy chủ -h localhost
[trong đó localhost có thể được thay thế bằng máy chủ I. P. địa chỉ], cổng -p 5432
, tên người dùng -U username
, tên cơ sở dữ liệu -d database_name
và mật khẩu nếu cần thiết -W password
[bạn có thể bỏ phần này đi hoặc nhập phiên bản chữ thường pip install psycopg2
0 để cho biết rằng không có mật khẩu]. Một yêu cầu kết nối hoàn chỉnh trong thiết bị đầu cuối sẽ giống như
pip install psycopg2
1
Lệnh kết nối thành công sẽ mở trình bao PostgreSQL và cho biết cơ sở dữ liệu đã được truy cập
[2] Kết nối trực tiếp trong một tệp
Khi bảo mật không phải là vấn đề, bạn có thể thực hành kết nối với cơ sở dữ liệu cục bộ trong một tập lệnh Python hoặc Jupyter Notebook. Đầu tiên bạn nhập thư viện psycopg2, sau đó bạn sử dụng. connect[] để truyền các tham số liên quan. Cuối cùng, bạn tạo một đối tượng con trỏ để chạy các lệnh PostgreSQL tới cơ sở dữ liệu. Dưới đây là đoạn mã của quy trình này
Đoạn mã trên kết nối với cơ sở dữ liệu cục bộ có tên là “nhà cung cấp” và truy vấn tất cả nội dung của bảng “nhà cung cấp”. Tên người dùng và mật khẩu là “postgres” và hiển thị rõ ràng cho bất kỳ ai có quyền truy cập vào tập lệnh này. Tham số cổng là không cần thiết nếu sử dụng cổng PostgreSQL mặc định 5432, tôi đã thêm nó để hiển thị định dạng thông thường. Sau khi tôi truy vấn tất cả dữ liệu từ bảng “nhà cung cấp”, tôi đã đóng con trỏ và kết nối để giải phóng tài nguyên băng thông của máy chủ
[3] Kết nối với tệp cấu hình và khởi tạo
Trong môi trường chuyên nghiệp, máy chủ có nhiều biện pháp bảo vệ bao gồm tên người dùng và mật khẩu riêng cho từng nhân viên. Mỗi tài khoản người dùng sẽ có các quyền tùy chỉnh sẽ xác định thông tin nào họ có thể truy cập và cập nhật. Nếu bạn đang lưu trữ thông tin này trên GitHub cho mục đích cộng tác, bạn sẽ muốn giữ bí mật thông tin đăng nhập của mình bằng cách lưu trữ chúng trong một tệp riêng biệt. Đây là nơi phát huy tác dụng của các tệp pip install psycopg2
2. Tôi sẽ làm theo Hướng dẫn PostgreSQL. com hướng dẫn cho phương pháp này
Ý tưởng chung là tập lệnh Python/tệp Jupyter Notebook sẽ nhập thông tin đăng nhập của tệp khởi tạo. Chỉ tập lệnh Python sẽ được chia sẻ để bảo vệ thông tin đăng nhập của tác giả. Sẽ có một tệp thứ ba để phân tích các tham số được lưu trữ trong tệp khởi tạo theo cách mà psycopg2 có thể diễn giải chúng. Nội dung của tệp khởi tạo, pip install psycopg2
3 là
Nội dung của tệp cơ sở dữ liệu. ban đầu
Các tham số của tệp khởi tạo có thể được phân tích cú pháp trong một tệp riêng biệt hoặc trong tệp chính mà chúng tôi dự định thao tác dữ liệu trong. Một tệp riêng biệt là tùy chọn tốt hơn vì chúng tôi không muốn sao chép và dán các khối mã lớn mỗi khi thực hiện truy vấn PostgreSQL. Tệp pip install psycopg2
4 lấy dữ liệu từ tệp khởi tạo và trả về một từ điển các tham số trong đó khóa là tên tham số [văn bản màu xanh ở trên] và giá trị là giá trị tham số thực [văn bản màu xanh ở trên]
pip install psycopg2
5
Tệp pip install psycopg2
4 được điều chỉnh từ PostgreSQLTutorial. com và sử dụng lớp ConfigParser[] của Python
Tập lệnh Python chính nhập và sử dụng hai tệp này được bao gồm trong ý chính bên dưới. Tệp pip install psycopg2
3 sẽ được đưa vào tệp .gitignore
để bảo vệ mật khẩu của tác giả
Khi bạn kết nối với cơ sở dữ liệu PostgreSQL, bạn có thể truy vấn dữ liệu cần thiết cho phân tích của mình. Kết quả của truy vấn có thể được hiển thị trong khung dữ liệu Pandas mà sau đó có thể được vận hành giống như tất cả dữ liệu được lưu trữ trong Pandas. Pandas có một vài phương thức, chẳng hạn như pip install psycopg2
9, cho phép chúng tôi trích xuất dữ liệu được lưu trữ PostgreSQL bằng kết nối psycopg2. Tập lệnh Python sau kết nối với cơ sở dữ liệu “nhà cung cấp” bằng cách sử dụng tệp pip install psycopg2
3 và pip install psycopg2
4, truy vấn nội dung của bảng “nhà cung cấp” và hiển thị kết quả trong khung dữ liệu Pandas bằng cách sử dụng hàm create_pandas_table
Khung dữ liệu Pandas với nội dung của bảng "nhà cung cấp". Phần kết luận
Khi bạn nhập dữ liệu từ cơ sở dữ liệu PostgreSQL vào tập lệnh Python hoặc Jupyter Notebook, bạn có thể áp dụng các công cụ khoa học dữ liệu mạnh mẽ để tiến hành phân tích và xây dựng các mô hình máy học. Bạn có thể bảo vệ thông tin đăng nhập của mình bằng các tệp khởi tạo, cấu hình và tệp .gitignore
riêng biệt. Thư viện Pandas chứa một số phương thức cho phép chúng tôi truy vấn trực tiếp kết quả từ cơ sở dữ liệu. Toàn bộ quy trình được mô tả trong bài viết này có thể được chứa và chia sẻ trong tương lai