Pymysql chèn nhiều hàng
Đây là hướng dẫn lập trình MySQL Python. Nó bao gồm những kiến thức cơ bản về lập trình MySQL với Python. Nó sử dụng mô-đun mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye6. Các ví dụ đã được tạo và thử nghiệm trên Ubuntu Linux Show MySQLdb là mô-đun cơ sở dữ liệu kế thừa Python 2 dành cho MySQL. Để lập trình Python 3 MySQL hiện đại, hãy sử dụng mô-đun PyMySQL. Xem hướng dẫn PyMySQL MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở hàng đầu. Nó là một hệ thống quản lý cơ sở dữ liệu đa người dùng, đa luồng. MySQL đặc biệt phổ biến trên web. Nó là một phần của nền tảng LAMP rất phổ biến bao gồm Linux, Apache, MySQL và PHP. Hiện tại MySQL thuộc sở hữu của Oracle Cơ sở dữ liệu MySQL có sẵn trên hầu hết các nền tảng hệ điều hành quan trọng. Nó chạy trên BSD Unix, Linux, Windows hoặc Mac OS. Wikipedia và YouTube sử dụng MySQL. Các trang web này quản lý hàng triệu truy vấn mỗi ngày. MySQL có hai phiên bản. Hệ thống máy chủ MySQL và hệ thống nhúng MySQL cài đặt MySQLdb$ apt-cache search MySQLdb python-mysqldb - A Python interface to MySQL python-mysqldb-dbg - A Python interface to MySQL (debug extension) bibus - bibliographic database eikazo - graphical frontend for SANE designed for mass-scanning Chúng tôi tìm kiếm tên gói cho mô-đun MySQLdb. Chúng tôi sử dụng lệnh mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye7 để tìm ra nó $ sudo apt-get install python-mysqldb Ở đây chúng tôi cài đặt giao diện Python cho cơ sở dữ liệu MySQL; Nếu bạn chưa cài đặt MySQL, chúng ta phải cài đặt nó $ sudo apt-get install mysql-server Lệnh này cài đặt máy chủ MySQL và nhiều gói khác. Trong khi cài đặt gói, chúng tôi được nhắc nhập mật khẩu cho tài khoản root MySQL Tiếp theo, chúng ta sẽ tạo một người dùng cơ sở dữ liệu mới và một cơ sở dữ liệu mới. Chúng tôi sử dụng ứng dụng khách mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye9________số 8 Chúng tôi kết nối với cơ sở dữ liệu bằng tài khoản root. Chúng tôi hiển thị tất cả các cơ sở dữ liệu có sẵn với câu lệnh #!/usr/bin/python # -*- coding: utf-8 -*- import _mysql import sys try: con = _mysql.connect('localhost', 'testuser', 'test623', 'testdb') con.query("SELECT VERSION()") result = con.use_result() print "MySQL version: %s" % \ result.fetch_row()[0] except _mysql.Error, e: print "Error %d: %s" % (e.args[0], e.args[1]) sys.exit(1) finally: if con: con.close()1 $ apt-cache search MySQLdb python-mysqldb - A Python interface to MySQL python-mysqldb-dbg - A Python interface to MySQL (debug extension) bibus - bibliographic database eikazo - graphical frontend for SANE designed for mass-scanning0 Chúng tôi tạo một cơ sở dữ liệu #!/usr/bin/python # -*- coding: utf-8 -*- import _mysql import sys try: con = _mysql.connect('localhost', 'testuser', 'test623', 'testdb') con.query("SELECT VERSION()") result = con.use_result() print "MySQL version: %s" % \ result.fetch_row()[0] except _mysql.Error, e: print "Error %d: %s" % (e.args[0], e.args[1]) sys.exit(1) finally: if con: con.close()2 mới. Chúng tôi sẽ sử dụng cơ sở dữ liệu này trong suốt hướng dẫn mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye Chúng tôi tạo một người dùng cơ sở dữ liệu mới. Chúng tôi cấp tất cả các đặc quyền cho người dùng này đối với tất cả các bảng của cơ sở dữ liệu #!/usr/bin/python # -*- coding: utf-8 -*- import _mysql import sys try: con = _mysql.connect('localhost', 'testuser', 'test623', 'testdb') con.query("SELECT VERSION()") result = con.use_result() print "MySQL version: %s" % \ result.fetch_row()[0] except _mysql.Error, e: print "Error %d: %s" % (e.args[0], e.args[1]) sys.exit(1) finally: if con: con.close()2 mô-đun _mysqlMô-đun mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye8 triển khai trực tiếp API MySQL C. Nó không tương thích với giao diện API Python DB. Nói chung, các lập trình viên thích mô-đun mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye6 hướng đối tượng hơn. Chúng tôi sẽ quan tâm đến mô-đun chữ cái. Ở đây chúng tôi chỉ trình bày một ví dụ nhỏ với mô-đun mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye8 #!/usr/bin/python # -*- coding: utf-8 -*- import _mysql import sys try: con = _mysql.connect('localhost', 'testuser', 'test623', 'testdb') con.query("SELECT VERSION()") result = con.use_result() print "MySQL version: %s" % \ result.fetch_row()[0] except _mysql.Error, e: print "Error %d: %s" % (e.args[0], e.args[1]) sys.exit(1) finally: if con: con.close() Ví dụ sẽ lấy và in phiên bản của cơ sở dữ liệu MySQL. Đối với điều này, chúng tôi sử dụng câu lệnh SQL #!/usr/bin/python # -*- coding: utf-8 -*- import _mysql import sys try: con = _mysql.connect('localhost', 'testuser', 'test623', 'testdb') con.query("SELECT VERSION()") result = con.use_result() print "MySQL version: %s" % \ result.fetch_row()[0] except _mysql.Error, e: print "Error %d: %s" % (e.args[0], e.args[1]) sys.exit(1) finally: if con: con.close()7 mô-đun MySQLdbmysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye6 là một trình bao bọc Python mỏng xung quanh mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye8. Nó tương thích với API Python DB, giúp mã dễ mang theo hơn. Sử dụng mô hình này là cách ưa thích để làm việc với MySQL Ví dụ về phiên bản MySQLdbTrong ví dụ đầu tiên, chúng ta sẽ lấy phiên bản của cơ sở dữ liệu MySQL mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye1 Trong tập lệnh này, chúng tôi kết nối với cơ sở dữ liệu testdb và thực thi câu lệnh #!/usr/bin/python # -*- coding: utf-8 -*- import _mysql import sys try: con = _mysql.connect('localhost', 'testuser', 'test623', 'testdb') con.query("SELECT VERSION()") result = con.use_result() print "MySQL version: %s" % \ result.fetch_row()[0] except _mysql.Error, e: print "Error %d: %s" % (e.args[0], e.args[1]) sys.exit(1) finally: if con: con.close()7. Điều này sẽ trả về phiên bản hiện tại của cơ sở dữ liệu MySQL. Chúng tôi in nó ra bàn điều khiểnQuảng cáo mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye3 Chúng tôi nhập mô-đun mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye6 mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye5 Chúng tôi kết nối với cơ sở dữ liệu bằng phương thức mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye12. Chúng tôi vượt qua bốn tham số. tên máy chủ, tên người dùng cơ sở dữ liệu, mật khẩu và tên cơ sở dữ liệu $ sudo apt-get install python-mysqldb0 Từ kết nối, chúng tôi nhận được đối tượng con trỏ. Con trỏ được sử dụng để duyệt qua các bản ghi từ tập kết quả. Chúng tôi gọi phương thức mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye13 của con trỏ và thực thi câu lệnh SQL $ sudo apt-get install python-mysqldb1 Chúng tôi lấy dữ liệu. Vì chúng tôi chỉ truy xuất một bản ghi, nên chúng tôi gọi phương thức mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye14 $ sudo apt-get install python-mysqldb2 Chúng tôi in dữ liệu mà chúng tôi đã lấy ra bàn điều khiển $ sudo apt-get install python-mysqldb3 Chúng tôi kiểm tra lỗi $ sudo apt-get install python-mysqldb4 Trong bước cuối cùng, chúng tôi giải phóng tài nguyên $ sudo apt-get install python-mysqldb5 Đây là một đầu ra mẫu MySQLdb tạo và điền vào bảngChúng tôi tạo một bảng và điền vào đó một số dữ liệu $ sudo apt-get install python-mysqldb6 Chúng tôi tạo một bảng mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye15 và thêm năm tác giả vào đó $ sudo apt-get install python-mysqldb7 Với từ khóa with, trình thông dịch Python sẽ tự động giải phóng tài nguyên. Nó cũng cung cấp xử lý lỗi Quảng cáo$ sudo apt-get install python-mysqldb8 Câu lệnh SQL này tạo một bảng cơ sở dữ liệu mới có tên là mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye15. Nó có hai cột. mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye17 và mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye18 $ sudo apt-get install python-mysqldb9 Chúng tôi sử dụng câu lệnh mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye19 để chèn tác giả vào bảng. Ở đây chúng tôi thêm hai hàng $ sudo apt-get install mysql-server0 Sau khi thực thi tập lệnh, chúng tôi sử dụng công cụ máy khách mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye9 để chọn tất cả dữ liệu từ bảng Nhà văn Tìm nạp MySQLdbPhương thức mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye31 tìm nạp tất cả (hoặc tất cả các hàng còn lại) của tập kết quả truy vấn và trả về danh sách các bộQuảng cáo $ sudo apt-get install mysql-server1 Trong ví dụ này, chúng tôi lấy tất cả dữ liệu từ bảng mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye15 $ sudo apt-get install mysql-server2 Câu lệnh SQL này chọn tất cả dữ liệu từ bảng mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye15 $ sudo apt-get install mysql-server3 Phương thức mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye31 lấy tất cả các bản ghi. Nó trả về một tập kết quả. Về mặt kỹ thuật, nó là một bộ của các bộ. Mỗi bộ dữ liệu bên trong đại diện cho một hàng trong bảngQuảng cáo $ sudo apt-get install mysql-server4 Chúng tôi in dữ liệu ra bàn điều khiển, từng hàng $ sudo apt-get install mysql-server5 Đây là đầu ra của ví dụ Trả lại tất cả dữ liệu tại một thời điểm có thể không khả thi. Chúng tôi có thể tìm nạp từng hàng một $ sudo apt-get install mysql-server6 Chúng tôi lại in dữ liệu từ bảng mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye15 ra bàn điều khiển. Lần này, chúng tôi tìm nạp từng hàng một $ sudo apt-get install mysql-server7 Chúng tôi tìm nạp từng hàng một bằng phương pháp mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye14. Thuộc tính rowcount cho biết số hàng được trả về bởi câu lệnh SQL $ sudo apt-get install mysql-server8 Đây là đầu ra của ví dụ Con trỏ từ điển MySQLdbCó nhiều loại con trỏ trong mô-đun mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye6. Con trỏ mặc định trả về dữ liệu trong một bộ gồm nhiều bộ. Khi chúng tôi sử dụng con trỏ từ điển, dữ liệu được gửi dưới dạng từ điển Python. Bằng cách này, chúng ta có thể tham khảo dữ liệu theo tên cột của chúng $ sudo apt-get install mysql-server9 Trong ví dụ này, chúng tôi lấy bốn hàng đầu tiên của bảng mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye15 bằng cách sử dụng con trỏ từ điển $ mysql -u root -p Enter password: mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)0 Chúng tôi sử dụng con trỏ từ điển mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye39 $ mysql -u root -p Enter password: mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)1 Chúng tôi lấy bốn hàng từ bảng mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye15 $ mysql -u root -p Enter password: mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)2 Chúng tôi đề cập đến dữ liệu theo tên cột của bảng mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye15 $ mysql -u root -p Enter password: mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)3 đầu ra ví dụ Tiêu đề cột MySQLdbTiếp theo chúng tôi sẽ trình bày cách in tiêu đề cột với dữ liệu từ bảng cơ sở dữ liệu $ mysql -u root -p Enter password: mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)4 Một lần nữa, chúng tôi in nội dung của bảng mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye15 ra bàn điều khiển. Bây giờ, chúng tôi cũng bao gồm tên của các cột. Tên cột được coi là 'siêu dữ liệu'. Nó được lấy từ đối tượng con trỏ $ mysql -u root -p Enter password: mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)5 Thuộc tính mô tả của con trỏ trả về thông tin về từng cột kết quả của truy vấn $ mysql -u root -p Enter password: mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)6 Ở đây chúng tôi in và định dạng tên cột của bảng $ mysql -u root -p Enter password: mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)7 Và ở đây, chúng tôi duyệt và in dữ liệu $ mysql -u root -p Enter password: mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)8 Đây là đầu ra MySQLdb báo cáo chuẩn bịKhi chúng tôi viết các câu lệnh đã chuẩn bị, chúng tôi sử dụng các trình giữ chỗ thay vì viết trực tiếp các giá trị vào các câu lệnh. Báo cáo được chuẩn bị tăng tính bảo mật và hiệu suất. Đặc tả API Python DB đề xuất năm cách khác nhau để xây dựng các câu lệnh đã chuẩn bị. Mô-đun mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye6 hỗ trợ một trong số chúng, mã định dạng ANSI mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye54 $ mysql -u root -p Enter password: mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)9 Chúng tôi thay đổi tên của một tác giả trên hàng thứ tư $ apt-cache search MySQLdb python-mysqldb - A Python interface to MySQL python-mysqldb-dbg - A Python interface to MySQL (debug extension) bibus - bibliographic database eikazo - graphical frontend for SANE designed for mass-scanning00 Chúng tôi sử dụng hai trình giữ chỗ được xác định bởi các điểm đánh dấu mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye55. Trước khi câu lệnh SQL được thực thi, các giá trị được liên kết với các trình giữ chỗ của chúng $ apt-cache search MySQLdb python-mysqldb - A Python interface to MySQL python-mysqldb-dbg - A Python interface to MySQL (debug extension) bibus - bibliographic database eikazo - graphical frontend for SANE designed for mass-scanning01 Chúng tôi đã cập nhật một hàng $ apt-cache search MySQLdb python-mysqldb - A Python interface to MySQL python-mysqldb-dbg - A Python interface to MySQL (debug extension) bibus - bibliographic database eikazo - graphical frontend for SANE designed for mass-scanning02 Tác giả ở hàng thứ tư đã được thay đổi thành công Mọi người thường tìm cách chèn hình ảnh vào cơ sở dữ liệu. Chúng tôi sẽ chỉ ra cách nó có thể được thực hiện trong SQLite và Python. Lưu ý rằng một số người không khuyên bạn nên đưa hình ảnh vào cơ sở dữ liệu. Hình ảnh là dữ liệu nhị phân. Cơ sở dữ liệu MySQL có một kiểu dữ liệu đặc biệt để lưu trữ dữ liệu nhị phân được gọi là mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye56 (Đối tượng lớn nhị phân). mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye57, mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye56, mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye59 và $ sudo apt-get install python-mysqldb00 là các biến thể của loại đối tượng nhị phân $ apt-cache search MySQLdb python-mysqldb - A Python interface to MySQL python-mysqldb-dbg - A Python interface to MySQL (debug extension) bibus - bibliographic database eikazo - graphical frontend for SANE designed for mass-scanning03 Đối với ví dụ này, chúng tôi tạo một bảng mới có tên là $ sudo apt-get install python-mysqldb01 $ apt-cache search MySQLdb python-mysqldb - A Python interface to MySQL python-mysqldb-dbg - A Python interface to MySQL (debug extension) bibus - bibliographic database eikazo - graphical frontend for SANE designed for mass-scanning04 Trong đoạn mã trên, chúng tôi đọc một hình ảnh JPG từ đĩa và chèn nó vào bảng $ sudo apt-get install python-mysqldb01Quảng cáo $ apt-cache search MySQLdb python-mysqldb - A Python interface to MySQL python-mysqldb-dbg - A Python interface to MySQL (debug extension) bibus - bibliographic database eikazo - graphical frontend for SANE designed for mass-scanning05 Phương pháp $ sudo apt-get install python-mysqldb03 đọc dữ liệu nhị phân từ tệp JPG, nằm trong thư mục làm việc hiện tại $ apt-cache search MySQLdb python-mysqldb - A Python interface to MySQL python-mysqldb-dbg - A Python interface to MySQL (debug extension) bibus - bibliographic database eikazo - graphical frontend for SANE designed for mass-scanning06 Chúng tôi chèn dữ liệu hình ảnh vào bảng $ sudo apt-get install python-mysqldb01 MySQLdb đọc hình ảnhTrong ví dụ trước, chúng ta đã chèn một hình ảnh vào bảng cơ sở dữ liệu. Bây giờ chúng ta sẽ đọc lại hình ảnh từ bảng $ apt-cache search MySQLdb python-mysqldb - A Python interface to MySQL python-mysqldb-dbg - A Python interface to MySQL (debug extension) bibus - bibliographic database eikazo - graphical frontend for SANE designed for mass-scanning07 Chúng tôi đọc một hình ảnh từ bảng $ sudo apt-get install python-mysqldb01 $ apt-cache search MySQLdb python-mysqldb - A Python interface to MySQL python-mysqldb-dbg - A Python interface to MySQL (debug extension) bibus - bibliographic database eikazo - graphical frontend for SANE designed for mass-scanning08 Chúng tôi chọn một bản ghi từ bảng $ apt-cache search MySQLdb python-mysqldb - A Python interface to MySQL python-mysqldb-dbg - A Python interface to MySQL (debug extension) bibus - bibliographic database eikazo - graphical frontend for SANE designed for mass-scanning09 Chúng tôi mở một tệp nhị phân có thể ghi mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye0 Chúng tôi ghi dữ liệu vào đĩa Bây giờ chúng ta sẽ có một hình ảnh có tên là $ sudo apt-get install python-mysqldb06 trong thư mục hiện tại của chúng ta. Chúng tôi có thể kiểm tra xem đó có phải là hình ảnh mà chúng tôi đã chèn vào bảng không Giao dịch là một đơn vị nguyên tử của hoạt động cơ sở dữ liệu đối với dữ liệu trong một hoặc nhiều cơ sở dữ liệu. Tác động của tất cả các câu lệnh SQL trong một giao dịch có thể được cam kết hoàn toàn với cơ sở dữ liệu hoặc tất cả được khôi phục Đối với cơ sở dữ liệu hỗ trợ giao dịch, giao diện Python âm thầm bắt đầu giao dịch khi con trỏ được tạo. Phương thức $ sudo apt-get install python-mysqldb07 xác nhận các bản cập nhật được thực hiện bằng con trỏ đó và phương thức $ sudo apt-get install python-mysqldb08 loại bỏ chúng. Mỗi phương thức bắt đầu một giao dịch mới Cơ sở dữ liệu MySQL có các loại công cụ lưu trữ khác nhau. Phổ biến nhất là các công cụ MyISAM và InnoDB. Kể từ MySQL 5. 5, InnoDB trở thành công cụ lưu trữ mặc định. Có sự đánh đổi giữa bảo mật dữ liệu và tốc độ cơ sở dữ liệu. Các bảng MyISAM xử lý nhanh hơn và chúng không hỗ trợ các giao dịch. Các phương thức $ sudo apt-get install python-mysqldb07 và $ sudo apt-get install python-mysqldb08 không được triển khai. họ không làm gì cả. Mặt khác, các bảng InnoDB an toàn hơn trước việc mất dữ liệu. Họ hỗ trợ các giao dịch. Chúng xử lý chậm hơn mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye1 Chúng tôi tạo lại bảng mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye15. Chúng tôi rõ ràng làm việc với các giao dịch mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye2 Trong Python DB API, chúng tôi không gọi câu lệnh BEGIN để bắt đầu giao dịch. Một giao dịch được bắt đầu khi con trỏ được tạo mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye3 Chúng tôi đang xử lý một loại bảng InnoDB. Đối với các phiên bản MySQL cũ hơn (<5. 5), chúng ta cần chỉ định loại động cơ với tùy chọn $ sudo apt-get install python-mysqldb12 mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye4 Chúng ta phải kết thúc giao dịch bằng phương thức $ sudo apt-get install python-mysqldb07 hoặc $ sudo apt-get install python-mysqldb08. Nếu chúng ta nhận xét dòng này, bảng được tạo nhưng dữ liệu không được ghi vào bảng Trong hướng dẫn này, chúng tôi đã làm việc với các giao dịch mà không nêu rõ chúng. Chúng tôi đã sử dụng trình quản lý bối cảnh. Trình quản lý ngữ cảnh xử lý đầu vào và đầu ra khỏi ngữ cảnh thời gian chạy mong muốn để thực thi khối mã. Trình quản lý bối cảnh thường được gọi bằng cách sử dụng câu lệnh $ sudo apt-get install python-mysqldb15 Các đối tượng kết nối trong mô-đun mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye6 có thể được sử dụng làm trình quản lý ngữ cảnh. Họ tự động cam kết hoặc khôi phục giao dịch. Trình quản lý bối cảnh kết nối làm sạch mã bằng cách loại bỏ các câu lệnh $ sudo apt-get install python-mysqldb17, $ sudo apt-get install python-mysqldb18 và $ sudo apt-get install python-mysqldb19 mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye5 Trong ví dụ mã của chúng tôi, trình quản lý ngữ cảnh xử lý tất cả các công việc cần thiết để xử lý lỗi. Nó tự động cam kết hoặc khôi phục giao dịch Đây là hướng dẫn MySQL Python. Nó đã sử dụng mô-đun MySQLdb kế thừa để hoạt động với MySQL. Tham khảo hướng dẫn PyMySQL để làm việc với mô-đun PyMySQL hiện đại |