Kết nối với cơ sở dữ liệu MySQL bằng Python có thể gây nhầm lẫn. Có một số trình điều khiển kết nối khác nhau và không phải tất cả chúng đều hoạt động tốt với các hệ điều hành khác nhau. Trên hết, kích hoạt SSL có thể là một thách thức
Bài viết này đề cập đến bốn phương pháp bạn có thể sử dụng để kết nối ứng dụng Python của mình với MySQL. Những ví dụ này sẽ sử dụng PlanetScale, một nền tảng cơ sở dữ liệu không có máy chủ cho MySQL, nhưng cơ sở dữ liệu thực tế mà bạn kết nối là tùy ý
Các phương thức kết nối sau đây sẽ được đề cập
0sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
1sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
2sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
3sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
Nếu bạn cần một cơ sở dữ liệu miễn phí để kiểm tra kết nối của mình, PlanetScale là một lựa chọn tuyệt vời. PlanetScale được xây dựng dựa trên Vitess và cung cấp cho bạn quy trình làm việc phân nhánh quen thuộc để kiểm tra và triển khai các thay đổi lược đồ
Vitess được xây dựng vào năm 2010 để giải quyết các vấn đề về quy mô tại YouTube. Kể từ đó, dự án nguồn mở đã tiếp tục phát triển và hiện đang giúp một số công ty như Slack và Square xử lý nhu cầu mở rộng quy mô dữ liệu khổng lồ của họ
Đăng ký tài khoản để nhận cơ sở dữ liệu 5GB miễn phí
Tạo cơ sở dữ liệu
Khi bạn đang ở trong bảng điều khiển PlanetScale
- Nhấp vào "Tạo cơ sở dữ liệu mới" trên bảng điều khiển tổng quan về tổ chức của bạn
- Đặt tên cho cơ sở dữ liệu của bạn
- Chọn một khu vực từ danh sách thả xuống
- Nhấp vào Tạo cơ sở dữ liệu
Cơ sở dữ liệu của bạn sẽ được tạo với nhánh phát triển
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
4. Bạn có thể thực hiện các thay đổi lược đồ tại đây và quảng bá nó vào sản xuất khi bạn đã sẵn sàngNhận thông tin đăng nhập kết nối
Để tạo thông tin đăng nhập kết nối
- Nhấp vào "Kết nối" trên trang tổng quan về cơ sở dữ liệu của bạn
- Chọn "Python" từ danh sách thả xuống "Kết nối với"
- Sao chép thông tin đăng nhập vào tệp
5 trong thư mục ứng dụng Python của bạnsudo apt-get install python3-dev default-libmysqlclient-dev build-essential
Để đảm bảo kết nối an toàn, PlanetScale sử dụng chứng chỉ từ Tổ chức phát hành chứng chỉ [CA] là một phần của gốc hệ thống có sẵn trên hầu hết các nền tảng. Bạn phải chỉ định đường dẫn đến chứng chỉ CA mà bạn tin tưởng khi kết nối với cơ sở dữ liệu. Lưu ý rằng đường dẫn này phụ thuộc vào nền tảng của bạn. trên các hệ điều hành và bản phân phối khác nhau
Nếu bạn đã sao chép thông tin đăng nhập từ bảng điều khiển PlanetScale, điều này sẽ được thực hiện cho bạn vì PlanetScale tự động phát hiện hệ điều hành của bạn
Nếu đang sử dụng hệ thống Windows, bạn cần tải xuống chứng chỉ gốc, sau đó trỏ đến vị trí của chúng với các tùy chọn cấu hình chính xác cho trình điều khiển mà bạn đang sử dụng
Gói
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
0 là một trong những gói Python phổ biến nhất dành cho MySQL. Nó chứa mô-đun sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
7, một giao diện với MySQL cung cấp API cơ sở dữ liệu PythonBắt đầu bằng cách cài đặt
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
0. Bạn có thể làm điều này theo hai cách- Sử dụng trình cài đặt từ trang MySQL chính thức phù hợp với phiên bản HĐH và SQL mà bạn đang chạy
- Sử dụng
9 để cài đặt nósudo apt-get install python3-dev default-libmysqlclient-dev build-essential
Phần cuối
pip install mysqlclient
Trên Linux, bạn có thể cần cài đặt các tiêu đề và thư viện phát triển Python3 và MySQL trước khi cài đặt
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
0Phần cuối
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
Khi bạn đã cài đặt
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
0, bạn có thể kết nối với cơ sở dữ liệu bằng mã saucon trăn
import os
import MySQLdb # import the MySQLdb module
from dotenv import load_dotenv
load_dotenv[]
# Create the connection object
connection = MySQLdb.connect[
host=os.getenv["HOST"],
user=os.getenv["USERNAME"],
passwd=os.getenv["PASSWORD"],
db=os.getenv["DATABASE"],
ssl_mode="VERIFY_IDENTITY",
ssl={
'ca': os.getenv["SSL_CERT"]
}
]
# Create cursor and use it to execute SQL command
cursor = connection.cursor[]
cursor.execute["select @@version"]
version = cursor.fetchone[]
if version:
print['Running version: ', version]
else:
print['Not connected.']
Lưu ý, bạn phải cài đặt
import os
import MySQLdb # import the MySQLdb module
from dotenv import load_dotenv
load_dotenv[]
# Create the connection object
connection = MySQLdb.connect[
host=os.getenv["HOST"],
user=os.getenv["USERNAME"],
passwd=os.getenv["PASSWORD"],
db=os.getenv["DATABASE"],
ssl_mode="VERIFY_IDENTITY",
ssl={
'ca': os.getenv["SSL_CERT"]
}
]
# Create cursor and use it to execute SQL command
cursor = connection.cursor[]
cursor.execute["select @@version"]
version = cursor.fetchone[]
if version:
print['Running version: ', version]
else:
print['Not connected.']
2 và nhập mô-đun import os
import MySQLdb # import the MySQLdb module
from dotenv import load_dotenv
load_dotenv[]
# Create the connection object
connection = MySQLdb.connect[
host=os.getenv["HOST"],
user=os.getenv["USERNAME"],
passwd=os.getenv["PASSWORD"],
db=os.getenv["DATABASE"],
ssl_mode="VERIFY_IDENTITY",
ssl={
'ca': os.getenv["SSL_CERT"]
}
]
# Create cursor and use it to execute SQL command
cursor = connection.cursor[]
cursor.execute["select @@version"]
version = cursor.fetchone[]
if version:
print['Running version: ', version]
else:
print['Not connected.']
3 để truy cập thông tin đăng nhập cơ sở dữ liệu trong tệp sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
5Lưu ý cho người dùng Windows. Cài đặt
0 từ tệp bánh xe không hỗ trợsudo apt-get install python3-dev default-libmysqlclient-dev build-essential
6. Vì bạn muốn đảm bảo kết nối cơ sở dữ liệu được an toàn, chúng tôi khuyên bạn nên sử dụng trình điều khiển khác, chẳng hạn như mysql-connector-pythonimport os import MySQLdb # import the MySQLdb module from dotenv import load_dotenv load_dotenv[] # Create the connection object connection = MySQLdb.connect[ host=os.getenv["HOST"], user=os.getenv["USERNAME"], passwd=os.getenv["PASSWORD"], db=os.getenv["DATABASE"], ssl_mode="VERIFY_IDENTITY", ssl={ 'ca': os.getenv["SSL_CERT"] } ] # Create cursor and use it to execute SQL command cursor = connection.cursor[] cursor.execute["select @@version"] version = cursor.fetchone[] if version: print['Running version: ', version] else: print['Not connected.']
Ví dụ này sử dụng kết nối để tìm nạp phiên bản SQL của cơ sở dữ liệu rồi đóng kết nối
Các phương thức kết nối còn lại có cú pháp gần giống như ví dụ này. Cú pháp tương tự này bắt nguồn từ đặc tả API cơ sở dữ liệu Python [PEP 249] khuyến khích tính nhất quán giữa các mô-đun Python được sử dụng để truy cập cơ sở dữ liệu
Mô-đun MySQL Connector/Python là trình điều khiển chính thức được Oracle hỗ trợ để kết nối MySQL thông qua Python. Trình kết nối hoàn toàn là Python, trong khi
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
0 được viết bằng C. Nó cũng độc lập, có nghĩa là nó không yêu cầu thư viện máy khách MySQL hoặc bất kỳ mô-đun Python nào bên ngoài thư viện chuẩnLưu ý rằng Trình kết nối MySQL/Python không hỗ trợ các phương thức xác thực máy chủ MySQL cũ, điều đó có nghĩa là các phiên bản MySQL trước 4. 1 không hoạt động
Bắt đầu bằng cách cài đặt mô-đun
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
1. Bạn nên cài đặt nó bằng pipPhần cuối
pip install mysql-connector-python
Sau khi cài đặt, sử dụng đoạn mã sau để kết nối với MySQL
con trăn
import os
from dotenv import load_dotenv
from mysql.connector import Error
import mysql.connector
load_dotenv[]
connection = mysql.connector.connect[
host=os.getenv["HOST"],
database=os.getenv["DATABASE"],
user=os.getenv["USERNAME"],
password=os.getenv["PASSWORD"],
ssl_ca=os.getenv["SSL_CERT"]
]
try:
if connection.is_connected[]:
cursor = connection.cursor[]
cursor.execute["select @@version "]
version = cursor.fetchone[]
if version:
print['Running version: ', version]
else:
print['Not connected.']
except Error as e:
print["Error while connecting to MySQL", e]
finally:
connection.close[]
Gói PyMySQL là một trình kết nối khác mà bạn có thể sử dụng để kết nối Python với MySQL. Đó là một lựa chọn tốt nếu bạn đang tìm kiếm tốc độ, vì nó nhanh hơn
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
1Bạn có thể cài đặt nó bằng pip với
Phần cuối
pip install PyMySQL
Sau đó, sử dụng mã kết nối sau
con trăn
from dotenv import load_dotenv
import pymysql
import os
load_dotenv[]
connection = pymysql.connect[
host=os.getenv["HOST"],
database=os.getenv["DATABASE"],
user=os.getenv["USERNAME"],
password=os.getenv["PASSWORD"],
ssl_ca=os.getenv["SSL_CERT"]
]
cursor = connection.cursor[]
cursor.execute["select @@version "]
version = cursor.fetchone[]
if version:
print['Running version: ', version]
else:
print['Not connected.']
connection.close[]
Thư viện
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
3 được sử dụng để truy cập cơ sở dữ liệu MySQL từ khung asyncio. Ngoài việc không đồng bộ, mã kết nối tương tự như PyMySQL. Lưu ý rằng việc sử dụng sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
3 yêu cầu Python 3. 7+ và PyMySQLĐể sử dụng
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
3, trước tiên hãy cài đặt mô-đun không đồng bộ vớiPhần cuối
pip install asyncio
Sau đó, cài đặt
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
3 bằng cách sử dụngPhần cuối
pip install aiomysql
Sau đó, bạn có thể kết nối với MySQL bằng mã sau
con trăn
import os
import asyncio
import aiomysql
import ssl
from dotenv import load_dotenv
load_dotenv[]
ctx = ssl.SSLContext[ssl.PROTOCOL_TLS_CLIENT]
ctx.load_verify_locations[cafile=os.getenv["SSL_CERT"]]
loop = asyncio.get_event_loop[]
async def connect_db[]:
connection = await aiomysql.connect[
host=os.getenv["HOST"],
port=3306,
user=os.getenv["USERNAME"],
password=os.getenv["PASSWORD"],
db=os.getenv["DATABASE"],
loop=loop,
ssl=ctx
]
cursor = await connection.cursor[]
await cursor.execute["select @@version"]
version = await cursor.fetchall[]
print['Running version: ', version]
await cursor.close[]
connection.close[]
loop.run_until_complete[connect_db[]]
Dữ liệu liên tục trong cơ sở dữ liệu là một trong những tính năng phổ biến của các ứng dụng phần mềm. Giống như Python, hầu hết các ngôn ngữ lập trình đều hỗ trợ kết nối và tương tác với các cơ sở dữ liệu khác nhau
Hướng dẫn này khám phá việc kết nối Python với MySQL. Chúng tôi đã chia sẻ bốn trình kết nối phổ biến khác nhau mà bạn có thể sử dụng và thử nghiệm chúng trên cơ sở dữ liệu PlanetScale bằng SSL để bảo mật — một bước quan trọng vì nó ngăn chặn các cuộc tấn công trung gian. Chúng tôi đã xem xét cách thức hoạt động của trình kết nối đối với từng phương thức kết nối và cho bạn thấy mã cần thiết để chạy nó. Bây giờ bạn đã hoàn thành phần tổng quan thực hành này, bạn đã sẵn sàng để kết nối cơ sở dữ liệu MySQL với ứng dụng Python