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.

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:

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!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!