Python là một ngôn ngữ mạnh mẽ cho phép bạn thậm chí kết nối với cơ sở dữ liệu và chạy các truy vấn SQL. Thông thường, bạn có thể cần tìm nạp dữ liệu từ cơ sở dữ liệu từ bên trong ứng dụng hoặc trang web python của mình. Python cung cấp nhiều thư viện hữu ích cho mục đích này. Trong bài viết này, chúng ta sẽ xem xét cách kết nối với cơ sở dữ liệu bằng python và cũng tạo tập lệnh python để chạy truy vấn SQL đối với cơ sở dữ liệu của bạn
Tập lệnh Python để chạy truy vấn SQL
Dưới đây là các bước để chạy truy vấn SQL trong python
1. Cài đặt thư viện cơ sở dữ liệu Python
Trước tiên, bạn cần cài đặt đúng thư viện python, tùy thuộc vào loại cơ sở dữ liệu của bạn, để truy vấn cơ sở dữ liệu của bạn. Nếu bạn sử dụng cơ sở dữ liệu MySQL, hãy cài đặt gói MySQLdb. Nếu bạn sử dụng PostgreSQL, hãy cài đặt psycopg2 hoặc pygresql
Mở terminal và chạy các lệnh sau, tùy thuộc vào loại cơ sở dữ liệu của bạn
mysql
pip install MySQL-python pip install MySQL-python-connectorPostgreSQL
pip install psycopg2 pip install pygresql2. Tạo tập lệnh Python
Mở terminal và chạy lệnh sau để tạo tập lệnh python trống
$ sudo vi db_query.pyThêm dòng sau vào nó để đặt môi trường thực thi
#!/usr/bin/env python3. Nhập thư viện
Tùy thuộc vào Cơ sở dữ liệu của bạn, hãy thêm dòng sau để nhập thư viện thích hợp vào tập lệnh python của bạn
mysql
import MySQLdb as db_connectPostgreSQL
import psycopg2 as db_connect4. Kết nối với cơ sở dữ liệu của bạn
Tiếp theo, thêm các dòng sau để kết nối với cơ sở dữ liệu của bạn. Thay thế các giá trị của host_name, db_user, db_password và db_name bằng địa chỉ máy chủ, tên người dùng, mật khẩu và tên cơ sở dữ liệu của cơ sở dữ liệu của bạn tương ứng. Chúng tôi sử dụng phương thức connect() để thiết lập kết nối cơ sở dữ liệu và chuyển thông tin đăng nhập của người dùng cơ sở dữ liệu làm đối số
host_name="localhost" db_user="test_user" db_password="123" db_name="project connection = db_connect.connect(host=host_name,user=db_user,password=db_password,database=db_name) cursor = connection.cursor()Các dòng trên sẽ kết nối với cơ sở dữ liệu của bạn và trả về một đối tượng kết nối có thể được sử dụng để kết nối với cơ sở dữ liệu. Nó cũng cung cấp một đối tượng con trỏ được sử dụng để gửi truy vấn, tìm nạp kết quả và duyệt qua nó
5. Cơ sở dữ liệu truy vấn
Tiếp theo, viết truy vấn SQL của bạn
query = "select * from data limit 5"Tiếp theo, chúng ta sử dụng đối tượng con trỏ để thực hiện truy vấn, sử dụng lệnh exec
________số 8Lệnh trên sẽ chạy truy vấn SQL của bạn và lấy kết quả của nó. Chúng tôi sử dụng chức năng tìm nạp () để lấy tất cả các hàng dữ liệu. Bạn thậm chí có thể sử dụng tìm nạp () để nhận một hàng tại một thời điểm. Bạn có thể in kết quả bằng lệnh in hoặc lặp qua nó và thực hiện thêm thao tác dữ liệu
6. Đóng kết nối
Cuối cùng, khi bạn đã hoàn tất, điều quan trọng là phải đóng kết nối để nó không khiến máy chủ cơ sở dữ liệu cơ sở dữ liệu của bạn bận rộn
connection.close()lưu và đóng tập tin. Đây là toàn bộ mã để bạn tham khảo
pip install psycopg2 pip install pygresql0Làm cho tệp có thể thực thi được bằng lệnh sau
pip install psycopg2 pip install pygresql1Bạn có thể chạy tập lệnh bằng lệnh sau
pip install psycopg2 pip install pygresql2Đó là nó. Trong bài viết này, chúng ta đã học cách kết nối với cơ sở dữ liệu và chạy các truy vấn SQL đối với chúng. Bạn có thể sửa đổi nó theo yêu cầu của bạn. Điều quan trọng là tạo một đối tượng kết nối bằng hàm connect(), sử dụng con trỏ được tạo bằng hàm cursor() để chạy truy vấn và tìm nạp kết quả. Và cuối cùng đóng kết nối cơ sở dữ liệu
Điều quan trọng cần lưu ý là hầu hết tất cả các thư viện cơ sở dữ liệu đều sử dụng cùng chức năng connect(), cursor(), exec(), fetchall() để làm việc với cơ sở dữ liệu. Vì vậy, bạn có thể sử dụng đoạn mã trên để truy vấn hầu hết mọi cơ sở dữ liệu quan hệ, chỉ bằng cách thay đổi câu lệnh nhập ở đầu. tập tin py
Trong hướng dẫn này, chúng tôi sẽ sử dụng gói trình kết nối MySQL chính thức của python để tạo kết nối và thực hiện các truy vấn của chúng tôi
pip install psycopg2 pip install pygresql3Gói này cũng có sẵn trực tiếp từ trang tài liệu MySQL. Để được giải thích chi tiết hơn và tổng quan nhanh về gói trình kết nối mysql
Tạo kết nối
Tất nhiên, điều đầu tiên chúng ta cần làm là tạo kết nối đến cơ sở dữ liệu của mình, chúng ta sẽ sử dụng kết nối này cho tất cả các ví dụ sau trong hướng dẫn này, nếu bạn không quen với trình kết nối MySQL, tài liệu chính thức về trình kết nối MySQL của Python
Bạn có thể thay đổi thông tin đăng nhập trong ví dụ dưới đây có thể được thay đổi thành thông tin đăng nhập chính xác của bạn, chúng tôi sẽ sử dụng con trỏ từ điển cho các lần thực hiện của chúng tôi chỉ để làm cho kết quả lựa chọn dễ đọc hơn
pip install psycopg2 pip install pygresql4Thiết lập thử nghiệm. tệp sql có nhiều câu lệnh để thực thi
Bây giờ chúng ta cần tạo một tệp chứa nhiều câu lệnh mà chúng ta muốn thực thi, với ví dụ đầu tiên này, chúng ta sẽ tạo một bảng và cơ sở dữ liệu thử nghiệm đơn giản và chèn một vài bản ghi vào bảng đó
kiểm tra1. sql
pip install psycopg2 pip install pygresql5Nếu bạn đang chạy một bản phân phối Linux như Ubuntu, bạn có thể thực thi tệp trên từ dòng lệnh như thế này
pip install psycopg2 pip install pygresql6Thực hiện toàn bộ. sql trong một đối tượng con trỏ trong Python
Để thực hiện toàn bộ tệp, trước tiên chúng ta phải mở tệp và đọc nội dung vào con trỏ. exec(), tuy nhiên, điều này sẽ không hoạt động nếu không sử dụng thêm đối số 'multi=True' cho phép cung cấp nhiều câu lệnh cho phương thức
Khi cung cấp nhiều đối số, câu lệnh thực thi sẽ trả về một trình vòng lặp mà khi được lặp lại sẽ trả về đối tượng con trỏ tại thời điểm thực hiện từng câu lệnh, mỗi câu lệnh trong tệp sẽ được thực hiện tuần tự. Đối với mỗi lần lặp, chúng ta có thể truy cập đối tượng con trỏ và in thông tin về truy vấn mà nó hiện đang thực hiện
pip install psycopg2 pip install pygresql7Chạy mã ví dụ trên sẽ xuất ra như sau
pip install psycopg2 pip install pygresql8Nếu bây giờ bạn truy cập cơ sở dữ liệu của mình và xem trong bảng mới tạo, bạn sẽ thấy cả 3 phần chèn
pip install psycopg2 pip install pygresql9Xử lý bất kỳ đầu ra tiềm năng nào từ các lựa chọn và các câu lệnh tạo ra đầu ra khác
Nếu bạn bao gồm bất kỳ câu lệnh SQL nào trong tệp của mình mà mang lại một dạng kết quả nào đó, rất có thể là từ câu lệnh CHỌN hoặc câu lệnh SHOW chẳng hạn, thì bạn sẽ cần xử lý tập kết quả khi lặp lại nó để tiếp tục lặp lại, để biết liệu . thuộc tính with_rows sẽ trả về True nếu có hàng để tìm nạp. Sau đó, bạn có thể xử lý chúng khi bạn thấy phù hợp, với ví dụ này, chúng tôi sẽ chỉ cần in ra kết quả
Đối với ví dụ này, chúng tôi sẽ sử dụng tệp SQL sau
kiểm tra2. sql
$ sudo vi db_query.py0Ở đây chúng tôi chỉ đơn giản là chọn dữ liệu từ bảng kiểm tra mà chúng tôi đã tạo trước đó, sau đó liệt kê giá trị hiện tại của biến hệ thống sql_mode của chúng tôi
Để đọc kết quả của tệp này, chúng tôi có thể chỉnh sửa mã của mình một chút
$ sudo vi db_query.py1Chạy mã này sẽ dẫn đến đầu ra sau
$ sudo vi db_query.py2Đặt và sử dụng các biến người dùng và hệ thống
Không có bất kỳ sửa đổi nào đối với mã của chúng tôi, chúng tôi cũng có thể sử dụng các biến do người dùng và bộ hệ thống cũng như cập nhật chúng trong phiên của bạn, cho phép phức tạp hơn trong phiên của bạn. tập tin sql
kiểm tra3. sql
pip install psycopg2 pip install pygresql40Cập nhật cái nào. sql của bạn mà mã Python của bạn trỏ đến sau đó thực thi nó, kết quả sẽ như sau
pip install psycopg2 pip install pygresql41Cách thực hiện này. Các tệp sql có thể cực kỳ mạnh mẽ và cho phép bạn di chuyển các truy vấn SQL phức tạp ra khỏi mã python của mình và chuyển sang các tệp độc lập, cho phép tổ chức tốt hơn cho các dự án lớn với nhiều thao tác cơ sở dữ liệu phức tạp
thi hành. tệp sql trong Python với tham số chuỗi
Nếu bạn muốn tránh SQL injection, cách dễ nhất để tự bảo vệ mình bằng Python MySQL là sử dụng các tham số chuỗi, các tham số này được làm sạch trước khi sử dụng trong câu lệnh. Thực thi một câu lệnh SQL thông thường với các tham số trong Python trông như thế này
pip install psycopg2 pip install pygresql42Chúng ta có thể thêm các tham số vào tệp SQL của mình một cách dễ dàng. Chỉ cần thêm chuỗi tham số vào SQL của bạn như vậy
kiểm tra4. sql
pip install psycopg2 pip install pygresql43Sau đó, chúng ta có thể gán một giá trị cho tham số của mình trong mã Python
pip install psycopg2 pip install pygresql44Điều này sẽ dẫn đến đầu ra sau
pip install psycopg2 pip install pygresql45Nếu bạn có bất kỳ câu hỏi hoặc muốn thêm bất cứ điều gì thú vị, xin vui lòng để lại nhận xét bên dưới