Trình kết nối python mysql

Chương này sẽ giới thiệu khái quát cho bạn về cách truy cập Cơ sở dữ liệu bằng cách sử dụng Python và giới thiệu về một số hoạt động cơ bản trên Cơ sở dữ liệu như INSERT, UPDATE, DELETE

Trước khi theo dõi và thực hiện chương trình này, bạn cần tải xuống Mô-đun API DB riêng cho từng Cơ sở dữ liệu bạn cần truy cập. DB API cung cấp một tiêu chuẩn tối thiểu để làm việc với Cơ sở dữ liệu do sử dụng Python. Trong chương trình này, chúng ta sẽ sử dụng MySQL, vì thế trước khi hết chúng ta hãy tìm hiểu về MySQLdb Module

MySQLdb là gì?

MySQLdb là một Giao diện để kết nối tới Máy chủ Cơ sở dữ liệu MySQL từ Python. Nó phát triển khai thác Python Database API 2. 0 và được xây dựng trên cùng của MySQL C API

Cách cài đặt MySQLdb?

Trước khi tiến hành, bạn cần cài đặt MySQL trên thiết bị của mình. Sau đó gõ dòng Python script sau và thực thi nó

import MySQLdb

Nếu nó cho kết quả sau, thì có nghĩa là Mô-đun MySQLdb chưa được cài đặt

Traceback (most recent call last):
  File "test.py", line 3, in 
    import MySQLdb
ImportError: No module named MySQLdb

Để cài đặt MySQLdb Module, tải nó từ MySQLdb Download và tiến hành như sau

$ gunzip MySQL-python-1.2.2.tar.gz
$ tar -xvf MySQL-python-1.2.2.tar
$ cd MySQL-python-1.2.2
$ python setup.py build
$ python setup.py install

Database Connection in Python

Trước khi kết nối với Cơ sở dữ liệu MySQL, hãy chắc chắn

  • Bạn đã tạo một cơ sở dữ liệu có tên là TESTDB
  • You made a table is SINHVIEN in TESTDB
  • Bảng này có các trường HO, TEN, TUOI, GIOITINH and HOCPHI
  • ID người dùng là testuser và mật khẩu là test123 được thiết lập để truy cập TESTDB
  • Mô-đun MySQLdb đã được cài đặt phù hợp trên thiết bị của bạn
  • Bạn đã hiểu cơ bản về MySQL, nếu chưa bạn có thể tham khảo Bài hướng dẫn MySQL

Dưới đây là ví dụ về kết nối với TESTDB

import MySQLdb

# mo ket noi toi Database
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )

# chuan bi mot doi tuong cursor boi su dung phuong thuc cursor()
cursor = db.cursor()

# Thuc thi truy van SQL boi su dung phuong thuc execute().
cursor.execute("SELECT VERSION()")

# Lay mot hang boi su dung phuong thuc fetchone().
data = cursor.fetchone()

print "Database version : %s " % data

# ngat ket noi voi server
db.close()

Khi chạy tập lệnh này, nó sẽ cho kết quả sau trên thiết bị Linux

Database version : 5.0.45

Nếu một kết nối được thiết lập thành công, thì một kết nối đối tượng được trả về và được lưu giữ trong db, nếu không có db được thiết lập là Không có. Tiếp theo đó, đối tượng db được sử dụng để tạo đối tượng con trỏ, mà tiếp theo đó được sử dụng để thực hiện các truy vấn SQL. Cuối cùng, trước khi thoát ra, nó đảm bảo rằng kết nối tới Cơ sở dữ liệu đã được đóng và các tài nguyên đã được giải nén

Tạo bảng dữ liệu trong Python

Khi một kết nối tới Cơ sở dữ liệu đã được thiết lập, chúng ta có thể tạo các bảng hoặc bản ghi trong bảng đó bằng cách sử dụng phương thức thực thi của đối tượng con trỏ đã được tạo

You follow ví dụ để tạo bảng SINHVIEN

import MySQLdb

# mo ket noi toi Database
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )

# chuan bi mot doi tuong cursor boi su dung phuong thuc cursor()
cursor = db.cursor()

# Xoa bang neu no da ton tai boi su dung phuong thuc execute().
cursor.execute("DROP TABLE IF EXISTS SINHVIEN")

# Tao mot bang
sql = """CREATE TABLE SINHVIEN (
         HO  CHAR(20) NOT NULL,
         TEN  CHAR(20),
         TUOI INT,  
         GIOITINH CHAR(1),
         HOCPHI FLOAT )"""

cursor.execute(sql)

# ngat ket noi voi server
db.close()

Hoạt động INSERT trong Python

Hoạt động này bắt buộc khi bạn muốn tạo các bản ghi vào trong bảng đã tạo

Ví dụ sau sẽ thi hành lệnh SQL INSERT để tạo một bản ghi vào bảng SINHVIEN

import MySQLdb

# mo ket noi toi Database
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )

# chuan bi mot doi tuong cursor boi su dung phuong thuc cursor()
cursor = db.cursor()

# Truy van SQL de INSERT mot ban ghi vao trong database.
sql = """INSERT INTO SINHVIEN(HO,
         TEN, TUOI, GIOITINH, HOCPHI)
         VALUES ('Nguyen', 'Hoang', 20, 'M', 4000000)"""
try:
   # Thuc thi lenh SQL
   cursor.execute(sql)
   # Commit cac thay doi vao trong Database
   db.commit()
except:
   # Rollback trong tinh huong co bat ky error nao
   db.rollback()

# ngat ket noi voi server
db.close()

Ví dụ trên có thể được viết như sau để tạo các truy vấn SQL hay hơn

import MySQLdb

# mo ket noi toi Database
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )

# chuan bi mot doi tuong cursor boi su dung phuong thuc cursor()
cursor = db.cursor()

# Truy van SQL de INSERT mot ban ghi vao trong database.
sql = "INSERT INTO SINHVIEN(HO, \
       TEN, TUOI, GIOITINH, HOCPHI) \
       VALUES ('%s', '%s', '%d', '%c', '%d' )" % \
       ('Nguyen', 'Hoang', 20, 'M', 4000000)
try:
   # Thuc thi lenh SQL
   cursor.execute(sql)
   # Commit cac thay doi vao trong Database
   db.commit()
except:
   # Rollback trong tinh huong co bat ky error nao
   db.rollback()

# ngat ket noi voi server
db.close()

Ví dụ

Đoạn mã sau là một dạng thực thi khác, tại đây bạn có thể truyền các tham số một cách trực tiếp

```. user_id = "test123" mật khẩu = "mật khẩu"

lừa đảo. exec('chen cac gia tri de dang nhap ("%s", "%s")' % \(user_id, password))

________số 8_______

nhập MySQLdb

db = MySQLdb. connect("localhost","testuser","test123","TESTDB")

con trỏ = db. con trỏ()

sql = "CHỌN * TỪ SINHVIEN \ WHERE HOCPHI > '%d'" % (1000) thử

con trỏ. thực hiện (sql)

kết quả = con trỏ. tìm nạp () cho hàng trong kết quả. ho = hang[0] ten = hang[1] tuoi = hang[2] gioitinh = hang[3] hocphi = hang[4]