MySQL là một hệ cơ sở dữ liệu quan hệ phổ biến nhất hiện nay. Rất nhiều ngôn ngữ có thể kết nối đến MySQL và Python cũng không ngoại lệ. Show Mặc định Python không có thư viện để kết nối đến MySQL server. Trong phần này, để kết nối đến MySQL Server từ Python, chúng ta sẽ sử dụng module import MySQLdb1 9.1. Cài đặt MySQLdbCài đặt thông qua import MySQLdb2 như sau: $ sudo pip install MySQL-python Tham khảo thêm tại: https://pypi.python.org/pypi/MySQLhttps://pypi.python.org/pypi/MySQL Khai báo module MySQLdb là có thể sử dụng. import MySQLdb Trong một số trường hợp đã cài MySQLdb nhưng import báo lỗi thiếu file import MySQLdb3 . Nguyên nhân có thể là do hiện tại đường dẫn đến file không tồn tại. Thử tạo symlink hoặc sử dụng câu lệnh sau để tạo symlink từ file import MySQLdb3 đến thư mục import MySQLdb5 sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 9.2. Kết nối đến MySQL ServerBạn cần có một MySQL server đang chạy và cho kết nối đến. Trong trường hợp này là localhost nên không cần cấu hình đặc biệt, chỉ cần cung cấp username và password là có thể kết nối đến MySQL Server. Thực hiện gọi hàm như sau để trả về kết nối: import MySQLdb dbcon = MySQLdb.connect(host = 'localhost', user = 'myusername', passwd = 'mypassword', db = 'mydbname ') Nếu kết nối không thành công thì sẽ báo lỗi và ngưng chương trình. Cách kết nối an toàn là đưa vào trong try để bắt lỗi như sau:try để bắt lỗi như sau: import MySQLdb db = None try: db = MySQLdb.connect(host = 'localhost', user = 'root', passwd = 'root', db = 'mysql') except MySQLdb.Error, e: print "Error %d: %s" % (e.args[0],e.args[1]) sys.exit(1) if db: cur = db.cursor() cur.execute("SELECT VERSION()") ver = cur.fetchone() print "Database version : %s " % ver 9.3. Kết nối với charset utf8Mặc định kết nối đến MySQL server là charset import MySQLdb6 nên khi lấy dữ liệu unicode thì hiển thị Tiếng Việt không đúng, bạn cần phải chọn charset là import MySQLdb7 khi tạo kết nối. Cú pháp như sau: ... db = MySQLdb.connect(host = 'localhost', user = 'ro ot', passwd = 'root', db = 'test', charset = 'utf8') Tuyển dụng python các vị trí 9.4. Query dữ liệuĐể truy vấn dữ liệu (chạy câu lệnh SQL) thì sử dụng cursor của MySQLdb. Ví dụ:cursor của MySQLdb. Ví dụ: import MySQLdb db = MySQLdb.connect(host = 'localhost', user = 'ro ot', passwd = 'root', db = 'mysql'); cursor = db.cursor() sql = 'SELECT * FROM user' cursor.execute(sql) myusers = cursor.fetchall() Ví dụ dữ liệu biến import MySQLdb8 là: import MySQLdb9 Mặc định, sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib0 sẽ trả về mỗi dòng dữ liệu từ MySQL theo kiểu sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib1 , tức là không có key. Nếu bạn muốn trả về kiểu sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib2 thì có thể khai báo: import MySQLdb db = MySQLdb.connect(host = 'localhost', user = 'ro ot', passwd = 'root', db = 'mysql') cursor = db.cursor(MySQLdb.cursors.DictCursor) ... 9.5. Fetch dữ liệuCó một số cách để fetch dữ liệu thông dụng từ sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib0 sau khi đã sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib4 là sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib5 và sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib6 .khi đã sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib4 là sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib5 và sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib6 .
Sau khi kết nối và truy vấn thì có thể đóng kết nối theo ví dụ sau: import MySQLdb db = MySQLdb.connect(...) db.close() Ngoài ra, bạn cũng nên đóng cursor khi không còn sử dụng theo ví dụ:cursor khi không còn sử dụng theo ví dụ: import MySQLdb db = MySQLdb.connect(...) cursor = db.cursor() cursor.close() db.close() 9.7. Prepared StatementPrepared statement là kỹ thuật tham số hóa các dữ liệu truyền vào câu truy vấn thay vì nối chuỗi trực tiếp để xây dựng một chuỗi truy vấn dài. Kỹ thuật này được áp dụng nhiều và giúp tăng hiệu quả và tính bảo mật của câu truy vấn. Ví dụ: import MySQLdb0 Mỗi tham số truy vấn sẽ được thay thế bằng import MySQLdb dbcon = MySQLdb.connect(host = 'localhost', user = 'myusername', passwd = 'mypassword', db = 'mydbname ')1 và phương thức import MySQLdb dbcon = MySQLdb.connect(host = 'localhost', user = 'myusername', passwd = 'mypassword', db = 'mydbname ')2 sẽ có tham số thứ 2 là một Tuple có giá trị tương ứng với thứ tự xuất hiện của các thành phần import MySQLdb dbcon = MySQLdb.connect(host = 'localhost', user = 'myusername', passwd = 'mypassword', db = 'mydbname ')1 |