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;
Bye
6. Các ví dụ đã được tạo và thử nghiệm trên Ubuntu Linux

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;
Bye
7 để 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;
Bye
9

________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-scanning
0

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 _mysql

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;
Bye
8 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;
Bye
6 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;
Bye
8

#!/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 MySQLdb

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
6 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;
Bye
8. 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 MySQLdb

Trong 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;
Bye
1

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ển

Quả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;
Bye
3

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;
Bye
6

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
5

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;
Bye
12. 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-mysqldb
0

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;
Bye
13 của con trỏ và thực thi câu lệnh SQL

$ sudo apt-get install python-mysqldb
1

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;
Bye
14

$ sudo apt-get install python-mysqldb
2

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-mysqldb
3

Chúng tôi kiểm tra lỗi

$ sudo apt-get install python-mysqldb
4

Trong bước cuối cùng, chúng tôi giải phóng tài nguyên

$ sudo apt-get install python-mysqldb
5

Đây là một đầu ra mẫu

MySQLdb tạo và điền vào bảng

Chú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-mysqldb
6

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;
Bye
15 và thêm năm tác giả vào đó

$ sudo apt-get install python-mysqldb
7

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-mysqldb
8

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;
Bye
15. 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;
Bye
17 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;
Bye
18

$ sudo apt-get install python-mysqldb
9

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;
Bye
19 để chèn tác giả vào bảng. Ở đây chúng tôi thêm hai hàng

$ sudo apt-get install mysql-server
0

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;
Bye
9 để chọn tất cả dữ liệu từ bảng Nhà văn

Tìm nạp MySQLdb

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;
Bye
31 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-server
1

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;
Bye
15

$ sudo apt-get install mysql-server
2

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;
Bye
15

$ sudo apt-get install mysql-server
3

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;
Bye
31 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ảng

Quảng cáo
$ sudo apt-get install mysql-server
4

Chúng tôi in dữ liệu ra bàn điều khiển, từng hàng

$ sudo apt-get install mysql-server
5

Đâ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-server
6

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;
Bye
15 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-server
7

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;
Bye
14. 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-server
8

Đây là đầu ra của ví dụ

Con trỏ từ điển MySQLdb

Có 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;
Bye
6. 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-server
9

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;
Bye
15 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;
Bye
39

$ 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;
Bye
15

$ 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;
Bye
15

$ 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 MySQLdb

Tiế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;
Bye
15 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;
Bye
6 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;
Bye
54

$ 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-scanning
00

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;
Bye
55. 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-scanning
01

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-scanning
02

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;
Bye
56 [Đố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;
Bye
57,
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
56,
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
59 và
$ sudo apt-get install python-mysqldb
00 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-scanning
03

Đố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-mysqldb
01

$ 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
04

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-mysqldb
01

Quả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-scanning
05

Phương pháp

$ sudo apt-get install python-mysqldb
03 đọ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-scanning
06

Chúng tôi chèn dữ liệu hình ảnh vào bảng

$ sudo apt-get install python-mysqldb
01

MySQLdb đọc hình ảnh

Trong 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-scanning
07

Chúng tôi đọc một hình ảnh từ bảng

$ sudo apt-get install python-mysqldb
01

$ 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
08

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-scanning
09

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;
Bye
0

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-mysqldb
06 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-mysqldb
07 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-mysqldb
08 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-mysqldb
07 và
$ sudo apt-get install python-mysqldb
08 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;
Bye
1

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;
Bye
15. 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;
Bye
2

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;
Bye
3

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 [ 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 4

Chúng ta phải kết thúc giao dịch bằng phương thức

$ sudo apt-get install python-mysqldb
07 hoặc
$ sudo apt-get install python-mysqldb
08. 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-mysqldb
15

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;
Bye
6 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-mysqldb
17,
$ sudo apt-get install python-mysqldb
18 và
$ sudo apt-get install python-mysqldb
19

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
5

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

Chủ Đề