Hướng dẫn dùng python mariadb python

MySQL/MariaDB là 1 trong những Hệ quản trị CSDL được sử dụng phổ biến nhất, sau đây là những cách kết nối tới MySQL/MariaDB sử dụng ngôn ngữ lập trình Python 3:

Các thư viện kết nối MySQL/MariaDB

Để kết nối tới MySQL/MariaDB thì có 4 thư viện:

1. MySQL Connector Python

  • Trang chủ: https://pypi.python.org/pypi/mysql-connector-python
  • Hỗ trợ bởi Oracle
  • Pure python
  • Hơi chậm 1 chút
  • Không tương thích với MySQLdb

2. PyMySQL

  • Trang chủ: https://pypi.python.org/pypi/pymysql
  • Pure python
  • Nhanh hơn mysql-connector
  • Phần lơn tương thích với MySQLdb

3. CyMySQL

  • Trang chủ: https://pypi.python.org/pypi/cymysql
  • Một rẽ nhánh của pymysql sử dụng ngôn C để tăng hiệu suất

4. MySQL Client

  • Trang chủ: https://pypi.python.org/pypi/mysqlclient
  • Github: https://github.com/PyMySQL/mysqlclient-python
  • Document: https://mysqlclient.readthedocs.io/user_guide.html
  • Thư viện được khuyến khích bởi Django
  • Một rẽ nhành của MySQLdb
  • Hoạt động nhanh, vì nó dựa trên C.
  • Phần lớn tương thích với MySQLdb
  • Debian và Ubuntu cung cấp nó như là 1 packages:python-mysqldb và python3-mysqldb

Cài đặt thư viện MySQL Client

Cài đặt thông qua lệnh apt của Ubuntu và Debian

sudo apt-get install python3-dev default-libmysqlclient-dev

Cài đặt thông qua lệnh yum của CentOS và Red hat

sudo yum install python3-devel mysql-devel

Cài đặt thông qua lệnh brew MacOS

brew install mysql-connector-c

Cài đặt thông qua công cụ quản lý pip3 của Python 3

pip3 install mysqlclient

Kết nối tới MySQL/MariaDB bằng thư viện MySQL Client với Python 3

Để kết nối sử dụng Python MySQL Client chúng ta tham khảo đoạn source code sau:

#!/usr/bin/env python3
import MySQLdb

# Create db connection
db = MySQLdb.connect(host="127.0.0.1", port=3306, user="root", passwd="", db="vinasupport")

# To perform a query, you first need a cursor
c = db.cursor()

# make select version query
c.execute("select version()")

# Print output of the query
print(c.fetchone())

Kết quả:

Hướng dẫn dùng python mariadb python

Nguồn: vinasupport.com

Trước đây chúng tôi đã viết blog về việc sử dụng Python để kết nối với máy chủ MariaDB bằng gói MySQL Python. Vào tháng 6 năm 2020, MariaDB đã phát hành bản phát hành Connector / Python nói chung đầu tiên. Chúng tôi đã làm mới blog này để phản ánh công nghệ mới nhất. Nếu bạn cần blog cũ, bạn có thể tìm thấy nó ở đây .

Bạn có thể sử dụng ngôn ngữ lập trình phổ biến Python để quản lý dữ liệu được lưu trữ trong Nền tảng MariaDB, bao gồm Máy chủ MariaDB, MariaDB MaxScale và MariaDB SkySQL. Đây là mọi thứ bạn cần biết về việc kết nối với Nền tảng MariaDB từ Python để truy xuất, cập nhật và chèn thông tin.

Chuẩn bị và Cài đặt

Bạn sẽ cần quyền truy cập vào Máy chủ MariaDB. Chúng tôi đề xuất một trong hai phương pháp sau:
1. Tải xuống Máy chủ MariaDB trên phần cứng của riêng bạn. Xem  Hướng dẫn triển khai để biết hướng dẫn từng bước trong tài liệu của chúng tôi.

HOẶC LÀ

2. Triển khai Nền tảng MariaDB, bao gồm Máy chủ Doanh nghiệp MariaDB, sử dụng MariaDB SkySQL. Xem tài liệu của chúng tôi để khởi chạy dịch vụ cơ sở dữ liệu trong vài phút.

Nếu bạn muốn thử tích hợp Python với MariaDB nhưng bạn không có cơ sở dữ liệu để sử dụng, bạn có thể sử dụng cơ sở dữ liệu ví dụ về nhân viên phổ biến .

MariaDB cung cấp hỗ trợ Python thông qua Trình kết nối MariaDB / Python, có sẵn thông qua Chỉ mục gói Python. Để cài đặt, hãy sử dụng PIP:

$ pip3 install mariadb

Kết nối với máy chủ MariaDB

1. Để kết nối với Máy chủ MariaDB bằng Trình kết nối MariaDB / Python, bạn phải nhập nó trước, giống như bạn làm với bất kỳ mô-đun nào khác: import mariadb

2. Tiếp theo, thiết lập kết nối cơ sở dữ liệu với hàm connect (). Hàm nhận một loạt các đối số được đặt tên chỉ định thông tin xác thực ứng dụng khách của bạn, chẳng hạn như tên người dùng, máy chủ lưu trữ, mật khẩu. Nếu bạn đang sử dụng phiên bản cơ sở dữ liệu trên SkySQL, thông tin này được cung cấp trong trang Chi tiết dịch vụ cho phiên bản cơ sở dữ liệu của bạn.

Kết nối cung cấp cho bạn một giao diện để định cấu hình kết nối ứng dụng của bạn với Máy chủ MariaDB.

3. Cuối cùng, gọi cursor()phương thức trên kết nối để truy xuất con trỏ.

Con trỏ cung cấp cho bạn một giao diện để tương tác với Máy chủ, chẳng hạn như chạy các truy vấn SQL và quản lý các giao dịch.

# Module Imports
import mariadb
import sys 

# Connect to MariaDB Platform
try: conn = mariadb.connect( 
  	user="db_user", 
  	password="db_user_passwd", 
  	host="192.0.2.1", 
  	port=3306, 
  	database="employees" 
) except mariadb.Error as e: 
	print(f"Error connecting to MariaDB Platform: {e}") 
    sys.exit(1) 

# Get Cursor 
cur = conn.cursor()

Truy xuất dữ liệu

Khi bạn có mã ban đầu tại chỗ, bạn có thể bắt đầu làm việc với dữ liệu. Điều đầu tiên bạn nên làm là cố gắng lấy thông tin từ cơ sở dữ liệu. Đây là mã cho một truy vấn đối với cơ sở dữ liệu nhân viên:

cur.execute(
    "SELECT first_name,last_name FROM employees WHERE first_name=?", 
    (some_name,))


MariaDB Connector / Python sử dụng các câu lệnh đã chuẩn bị sẵn, làm sạch và chèn các giá trị từ bộ giá trị vào vị trí của các dấu chấm hỏi (?). Điều này an toàn hơn so với việc chèn thông qua chuỗi f hoặc bộ chỉ định định dạng khi làm việc với thông tin do người dùng cung cấp.

Kết quả truy vấn được lưu trữ trong một danh sách trong đối tượng con trỏ. Để xem kết quả, bạn có thể lặp qua con trỏ.

# Print Result-set
for (first_name, last_name) in cur: 
	print(f"First Name: {first_name}, Last Name: {last_name}")


Mỗi hàng được chuyển từ con trỏ dưới dạng một bộ chứa các cột trong SELECTcâu lệnh.

Thêm dữ liệu

Sử dụng cùng một execute()phương pháp với một INSERTcâu lệnh, bạn có thể thêm hàng vào bảng.

cursor.execute(
    "INSERT INTO employees (first_name,last_name) VALUES (?, ?)", 
    (first_name, last_name))


Theo mặc định, MariaDB Connector / Python cho phép tự động cam kết. Nếu bạn muốn quản lý thủ công các giao dịch của mình, chỉ cam kết khi bạn đã sẵn sàng, bạn có thể vô hiệu hóa nó bằng cách đặt autocommitthuộc tính trên kết nối thành False.

# Disable Auto-Commit
conn.autocommit = False


Khi điều này được thực hiện, bạn có thể cam kết và khôi phục các giao dịch bằng cách sử dụng các phương thức commit()rollback(). Máy chủ MariaDB cho phép bạn chạy nhiều giao dịch đồng thời trên cùng một bảng mà không cần khóa nó khi bạn sử dụng công cụ lưu trữ InnoDB.

Trong khi chèn hàng, bạn có thể muốn tìm Khóa chính của hàng được chèn cuối cùng khi nó được tạo, như với các giá trị tự động tăng. Bạn có thể truy xuất điều này bằng lastrowid()phương pháp trên con trỏ.

Việc cập nhật và xóa hàng được thực hiện tương tự như việc chèn chúng. Sự khác biệt duy nhất là trong truy vấn được sử dụng.

Bắt ngoại lệ

Đối với bất kỳ hành động SQL nào của bạn (truy vấn, cập nhật, xóa hoặc chèn bản ghi), bạn nên cố gắng kiểm tra lỗi để có thể xác minh rằng hành động của mình đang được thực thi như mong đợi và bạn biết về bất kỳ sự cố nào khi chúng xảy ra. Để bẫy lỗi, hãy sử dụng lớp Lỗi:

try: 
	cursor.execute("some MariaDB query"))
except mariadb.Error as e: 
	print(f"Error: {e}")


Nếu truy vấn trong trymệnh đề của mã trên không thành công, Máy chủ MariaDB trả về một ngoại lệ SQL, ngoại lệ này bị mắc vào ngoại lệ và được in ra stdout. Phương pháp lập trình tốt nhất để bắt các ngoại lệ này đặc biệt quan trọng khi bạn đang làm việc với cơ sở dữ liệu, vì bạn cần đảm bảo tính toàn vẹn của thông tin.

Khi bạn hoàn thành công việc với cơ sở dữ liệu, hãy đảm bảo rằng bạn đóng kết nối này để tránh mở các kết nối không sử dụng và do đó lãng phí tài nguyên. Bạn có thể đóng kết nối bằng close()phương pháp:

# Close Connection
conn.close()


Nếu bạn đã sử dụng SkySQL để thử nghiệm, bạn có thể muốn xóa dịch vụ cơ sở dữ liệu của mình để ngừng phát sinh phí.

Tập lệnh hoàn chỉnh

Đây là cách dễ dàng và đơn giản để kết nối mã Python của bạn với cơ sở dữ liệu MariaDB. Đây là cách một tập lệnh hoàn chỉnh sẽ trông như thế nào:

#!/usr/bin/python 
import mariadb 

conn = mariadb.connect( 
	user="db_user", 
  	password="db_user_passwd", 
  	host="localhost", 
  	database="employees"
) 
  
cur = conn.cursor() 
  
#retrieving information 
some_name = "Georgi" 
cur.execute("SELECT first_name,last_name FROM employees WHERE first_name=?", (some_name,))

for first_name, last_name in cur: 
	print(f"First name: {first_name}, Last name: {last_name}") 

#insert information
try: 
	cur.execute("INSERT INTO employees (first_name,last_name) VALUES (?, ?)", ("Maria","DB"))
except mariadb.Error as e: 
	print(f"Error: {e}") 

conn.commit() 
print(f"Last Inserted ID: {cur.lastrowid}") 
      
conn.close()

21 hữu ích 0 bình luận 8.5k xem chia sẻ