MySQLdb là một Interface để kết nối tới một MySQL Database Server từ Python. Nó triển khai Python Database API 2.0 và được xây dựng trên cùng của MySQL C API.
Trước khi tiến hành, bạn cần cài đặt MySQL trên thiết bị của bạn. Sau đó gõ dòng Python script sau và thực thi nó:
import MySQLdb
Nếu nó cho kết quả sau, thì nghĩa là MySQLdb Module đã không được cài đặt:
Traceback (most recent call last): File "test.py", line 3, inimport 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
Trước khi kết nối với một MySQL Database, đảm bảo:
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 script 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 thành lập, thì một đối tượng Connection được trả về và được lưu giữ vào trong db, nếu không db được thiết lập là None. Tiếp đó, đối tượng db được sử dụng để tạo đối tượng cursor, mà tiếp đó được sử dụng để thực thi các truy vấn SQL. Cuối cùng, trước khi thoát ra, nó bảo đảm rằng kết nối tới Database được đóng và các resource được giải phóng.
Khi một kết nối tới Database đã được thành lập, chúng ta có thể tạo các bảng hoặc bản ghi vào trong bảng đó bởi sử dụng phương thức execute của đối tượng cursor đã được tạo.
Bạn theo dõi 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()
Đây là hoạt động 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ẽ thực thi lệnh SQL INSERT để tạo một bản ghi vào trong 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()
Đoạn code sau là form 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" password = "password" con.execute('chen cac gia tri de dang nhap ("%s", "%s")' % \ (user_id, password)) ..................................
» Tin mới nhất:
» Các tin khác: