Trong bài này, chúng ta sẽ tìm hiểu về cách kết nối từ xa tới cơ sở dữ liệu MySQL bằng cách sử dụng Python. Việc lưu trữ dữ liệu trên một server để dễ dàng truy cập là điều hết sức quan trọng đối với mọi ứng dụng. Việc kết nối từ xa đến cơ sở dữ liệu tương đối phức tạp bởi vì các nhà cung cấp dịch vụ đều không cung cấp quyền truy cập từ xa tới cơ sở dữ liệu mysql. Ở bài này, chúng ta sẽ sử dụng module MySQLdb của Python để kết nối tới cơ sở dữ liệu, trong đó cơ sở dữ liệu này có thể được đặt ở trên bất cứ server nào có cung cấp dịch vụ truy cập từ xa.
Nội dung chính
1. MySQLdb là gì?
MySQLdb là một interface dùng để kết nối từ Python tới một máy chủ cơ sở dữ liệu MySQL. Nó triển khai Python Database API v2.0 và được xây dựng dựa trên MySQL C API (tức là các API được viết bằng ngôn ngữ C dành cho MySQL).
– Các gói cần cài đặt để sử dụng MySQLdb là:
mysql-connector-python
mysql-python
– Nếu sử dụng anaconda thì câu lệnh cài đặt gói sẽ là:
conda install -c anaconda mysql-python
conda install -c anaconda mysql-connector-python
– Ngoài ra còn có thể sử dụng các lệnh sau:
pip install MySQL-python
pip install MySQL-python-connector
– Để nạp các Package cần thiết vào chương trình Python:
import MYSQLdb
2. Cách kết nối từ xa đến cơ sở dữ liệu MySQL bằng Python
Trước khi bắt đầu đọc về phần này, bạn nên nắm được những kiến thức cơ bản về SQL. Tiếp theo, chúng ta sẽ tìm hiểu về các phương thức Python được sử dụng để kết nối từ xa đến cơ sở dữ liệu MySQL:
1. connect(): Phương thức này được sử dụng để tạo ra một kết nối tới cơ sở dữ liệu của chúng ta, nó nhận vào 4 đối số là:
– Server Name (tên máy chủ)
– Database User Name (tên người dùng cơ sở dữ liệu)
– Database Provider
– Database Name (tên cơ sở dữ liệu)
2. cursor(): Phương thức này tạo ra một cursor object (đối tượng con trỏ) có khả năng thực thi các truy vấn sql trên cơ sở dữ liệu.
3. execute(): Phương thức này được sử dụng để thực thi các truy vấn sql trên cơ sở dữ liệu. Nó nhận vào một sql query (thuộc kiểu String) làm đối số.
4. fetchone(): Phương thức này lấy ra hàng tiếp theo (the next row) của một tập kết quả truy vấn (query result set) và trả về một chuỗi đơn lẻ (single sequence), hoặc None nếu không có thêm hàng nào khả dụng.
5. close(): Phương thức này sẽ đóng lại kết nối với cơ sở dữ liệu.
3. Một số nhà cung cấp dịch vụ cơ sở dữ liệu MySQL từ xa miễn phí
1. www.freemysqlhosting.net
2. www.heliohost.org
– Đoạn code ví dụ sử dụng Python để kết nối từ xa tới cơ sở dữ liệu MySQL. Lưu ý rằng, đoạn code này sẽ không hoạt động trên các online IDE bời vì chúng chưa được cài đặt thêm các module cần thiết. Ngoài ra, đoạn code này còn yêu cầu một kết nối cơ sở dữ liệu MySQL từ xa với các giá trị sau được thiết lập đúng: Hostname, Dbusername Password và Dbname.
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------
# Module For Connecting To MySQL database
import MySQLdb
# Function for connecting to MySQL database
def mysqlconnect():
#Trying to connect
try:
db_connection= MySQLdb.connect
("Hostname","dbusername","password","dbname")
# If connection is not successful
except:
print("Can't connect to database")
return 0
# If Connection Is Successful
print("Connected")
# Making Cursor Object For Query Execution
cursor=db_connection.cursor()
# Executing Query
cursor.execute("SELECT CURDATE();")
# Above Query Gives Us The Current Date
# Fetching Data
m = cursor.fetchone()
# Printing Result Of Above
print("Today's Date Is ",m[0])
# Closing Database Connection
db_connection.close()
# Function Call For Connecting To Our Database
mysqlconnect()
– Kết quả in ra là:
Connected
Today's Date Is 2017-11-14
– Tiếp theo, chúng ta sẽ cùng xem một ví dụ mô tả việc tạo ra một bảng (table) trong cơ sở dữ liệu MySQL:
# Python code to illustrate and create a
# table in database
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","testuser","testpassword","gfgdb" )
cursor = db.cursor()
# Drop table if it already exist using execute()
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
# Create table as per requirement
sql = CREATE TABLE EMPLOYEE (
FNAME CHAR(20) NOT NULL,
LNAME CHAR(20),
AGE INT )
cursor.execute(sql) #table created
# disconnect from server
db.close()
Nguồn và Tài liệu tiếng anh tham khảo:
Tài liệu từ cafedev:
- Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
- Ebook về python tại đây.
- Các series tự học lập trình khác
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
Chào thân ái và quyết thắng!