Python MySQL - Hướng dẫn nhanh

Tiêu chuẩn Python cho giao diện cơ sở dữ liệu là Python DB-API. Hầu hết các giao diện cơ sở dữ liệu Python đều tuân theo tiêu chuẩn này.

Bạn có thể chọn cơ sở dữ liệu phù hợp cho ứng dụng của mình. API cơ sở dữ liệu Python hỗ trợ nhiều loại máy chủ cơ sở dữ liệu như -

  • GadFly
  • mSQL
  • MySQL
  • PostgreSQL
  • Microsoft SQL Server 2000
  • Informix
  • Interbase
  • Oracle
  • Sybase

Đây là danh sách các giao diện cơ sở dữ liệu Python có sẵn - Python Database Interfaces and APIs . Bạn phải tải xuống mô-đun API DB riêng biệt cho mỗi cơ sở dữ liệu bạn cần truy cập. Ví dụ: nếu bạn cần truy cập cơ sở dữ liệu Oracle cũng như cơ sở dữ liệu MySQL, bạn phải tải xuống cả mô-đun cơ sở dữ liệu Oracle và MySQL.

Mysql-connector-python là gì?

MySQL Python / Connector là một giao diện để kết nối với máy chủ cơ sở dữ liệu MySQL từ Python. Nó triển khai API cơ sở dữ liệu Python và được xây dựng trên MySQL.

Làm cách nào để cài đặt mysql-connector-python?

Trước hết, bạn cần đảm bảo rằng bạn đã cài đặt python trong máy của mình. Để làm như vậy, hãy mở dấu nhắc lệnh và nhập python vào đó rồi nhấn Enter . Nếu python đã được cài đặt trong hệ thống của bạn, lệnh này sẽ hiển thị phiên bản của nó như hình dưới đây:

C:\Users\Tutorialspoint>python
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

Bây giờ nhấn ctrl + z rồi Enter để thoát khỏi trình bao python và tạo một thư mục (trong đó bạn dự định cài đặt trình kết nối Python-MySQL) có tên Python_MySQL là -

>>> ^Z 
C:\Users\Tutorialspoint>d:
D:\>mkdir Python_MySQL

Xác minh PIP

PIP là một trình quản lý gói trong python, bằng cách sử dụng nó, bạn có thể cài đặt các mô-đun / gói khác nhau bằng Python. Do đó, để cài đặt Mysql-python mysql-connector-python, bạn cần đảm bảo rằng bạn đã cài đặt PIP trong máy tính và đã thêm vị trí của nó vào đường dẫn.

Bạn có thể làm như vậy bằng cách thực hiện lệnh pip. Nếu bạn không có PIP trong hệ thống của mình hoặc nếu bạn chưa thêm vị trí của nó trongPath biến môi trường, bạn sẽ nhận được thông báo lỗi là -

D:\Python_MySQL>pip
'pip' is not recognized as an internal or external command,
operable program or batch file.

Để cài đặt PIP, hãy tải xuống get-pip.py vào thư mục đã tạo ở trên và từ lệnh điều hướng nó và cài đặt pip như sau:

D:\>cd Python_MySQL
D:\Python_MySQL>python get-pip.py
Collecting pip
   Downloading
https://files.pythonhosted.org/packages/8d/07/f7d7ced2f97ca3098c16565efbe6b15fafcba53e8d9bdb431e09140514b0/pip-19.2.2-py2.py3-none-any.whl (1.4MB)
   |████████████████████████████████| 1.4MB 1.3MB/s
Collecting wheel
   Downloading 
https://files.pythonhosted.org/packages/00/83/b4a77d044e78ad1a45610eb88f745be2fd2c6d658f9798a15e384b7d57c9/wheel-0.33.6-py2.py3-none-any.whl
Installing collected packages: pip, wheel
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-19.2.2 wheel-0.33.6

Cài đặt mysql-connector-python

Khi bạn đã cài đặt Python và PIP, hãy mở dấu nhắc lệnh và nâng cấp pip (tùy chọn) như hình dưới đây -

C:\Users\Tutorialspoint>python -m pip install --upgrade pip
Collecting pip
   Using cached 
https://files.pythonhosted.org/packages/8d/07/f7d7ced2f97ca3098c16565efbe6b15fafcba53e8d9bdb431e09140514b0/pip-19.2.2-py2.py3-none-any.whl
Installing collected packages: pip
   Found existing installation: pip 19.0.3
      Uninstalling pip-19.0.3:
         Successfully uninstalled pip-19.0.3
Successfully installed pip-19.2.2

Sau đó, mở dấu nhắc lệnh ở chế độ quản trị và cài đặt python MySQL kết nối như -

C:\WINDOWS\system32>pip install mysql-connector-python
Collecting mysql-connector-python
   Using cached 
https://files.pythonhosted.org/packages/99/74/f41182e6b7aadc62b038b6939dce784b7f9ec4f89e2ae14f9ba8190dc9ab/mysql_connector_python-8.0.17-py2.py3-none-any.whl
Collecting protobuf>=3.0.0 (from mysql-connector-python)
   Using cached 
https://files.pythonhosted.org/packages/09/0e/614766ea191e649216b87d331a4179338c623e08c0cca291bcf8638730ce/protobuf-3.9.1-cp37-cp37m-win32.whl
Collecting six>=1.9 (from protobuf>=3.0.0->mysql-connector-python)
   Using cached 
https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl
Requirement already satisfied: setuptools in c:\program files (x86)\python37-32\lib\site-packages (from protobuf>=3.0.0->mysql-connector-python) (40.8.0)
Installing collected packages: six, protobuf, mysql-connector-python
Successfully installed mysql-connector-python-8.0.17 protobuf-3.9.1 six-1.12.0

xác minh

Để xác minh việc cài đặt, hãy tạo một tập lệnh python mẫu với dòng sau trong đó.

import mysql.connector

Nếu cài đặt thành công, khi bạn thực hiện nó, bạn sẽ không gặp bất kỳ lỗi nào -

D:\Python_MySQL>python test.py
D:\Python_MySQL>

Cài đặt Python từ Scratch

Đơn giản, nếu bạn cần cài đặt Python từ đầu. Truy cập Trang chủ Python .

Bấm vào Downloads , bạn sẽ được chuyển hướng đến trang tải xuống cung cấp liên kết cho phiên bản mới nhất của python cho các nền tảng khác nhau, chọn một và tải xuống.

Ví dụ: chúng tôi đã tải xuống python-3.7.4.exe (dành cho windows). Bắt đầu quá trình cài đặt bằng cách nhấp đúp vào tệp .exe đã tải xuống.

Đánh dấu vào tùy chọn Add Python 3.7 to Path và tiến hành cài đặt. Sau khi hoàn thành quá trình này, python sẽ được cài đặt trong hệ thống của bạn.

Để kết nối với MySQL, (một cách là) mở dấu nhắc lệnh MySQL trong hệ thống của bạn như hình dưới đây:

Nó yêu cầu mật khẩu ở đây; bạn cần nhập mật khẩu bạn đã đặt cho người dùng mặc định (root) tại thời điểm cài đặt.

Sau đó, một kết nối được thiết lập với MySQL hiển thị thông báo sau:

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.12-log MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Bạn có thể ngắt kết nối khỏi cơ sở dữ liệu MySQL bất kỳ lúc nào bằng cách sử dụng exitlệnh tại dấu nhắc mysql> .

mysql> exit
Bye

Thiết lập kết nối với MySQL bằng Python

Trước khi thiết lập kết nối với cơ sở dữ liệu MySQL bằng python, hãy giả sử:

  • Đó là chúng tôi đã tạo một cơ sở dữ liệu với tên mydb.

  • Chúng tôi đã tạo một bảng EMPLOYEE với các cột FIRST_NAME, LAST_NAME, AGE, SEX và THU NHẬP.

  • Thông tin đăng nhập chúng tôi đang sử dụng để kết nối với MySQL là tên người dùng - root, mật khẩu - password.

Bạn có thể thiết lập kết nối bằng cách sử dụng hàm tạo connect () . Điều này chấp nhận tên người dùng, mật khẩu, máy chủ lưu trữ và tên của cơ sở dữ liệu bạn cần kết nối (tùy chọn) và trả về một đối tượng của lớp MySQLConnection.

Thí dụ

Sau đây là ví dụ về kết nối với cơ sở dữ liệu MySQL "mydb".

import mysql.connector

#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb'
)

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Executing an MYSQL function using the execute() method
cursor.execute("SELECT DATABASE()")

#Fetch a single row using fetchone() method.
data = cursor.fetchone()

print("Connection established to: ",data)

#Closing the connection
conn.close()

Đầu ra

Khi thực thi, tập lệnh này tạo ra kết quả sau:

D:\Python_MySQL>python EstablishCon.py
Connection established to: ('mydb',)

Bạn cũng có thể thiết lập kết nối với MySQL bằng cách chuyển thông tin xác thực (tên người dùng, mật khẩu, tên máy chủ và tên cơ sở dữ liệu) tới connection.MySQLConnection() như hình dưới đây -

from mysql.connector import (connection)

#establishing the connection
conn = connection.MySQLConnection(
   user='root', password='password', host='127.0.0.1', database='mydb'
)

#Closing the connection
conn.close()

Bạn có thể tạo cơ sở dữ liệu trong MYSQL bằng cách sử dụng truy vấn TẠO CƠ SỞ DỮ LIỆU.

Cú pháp

Sau đây là cú pháp của truy vấn TẠO CƠ SỞ DỮ LIỆU:

CREATE DATABASE name_of_the_database

Thí dụ

Câu lệnh sau tạo một cơ sở dữ liệu với tên mydb trong MySQL:

mysql> CREATE DATABASE mydb;
Query OK, 1 row affected (0.04 sec)

Nếu bạn quan sát danh sách cơ sở dữ liệu bằng câu lệnh SHOW DATABASES, bạn có thể quan sát cơ sở dữ liệu mới được tạo trong đó như hình dưới đây:

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| logging            |
| mydatabase         |
| mydb               |
| performance_schema |
| students           |
| sys                |
+--------------------+
26 rows in set (0.15 sec)

Tạo cơ sở dữ liệu trong MySQL bằng Python

Sau khi thiết lập kết nối với MySQL, để thao tác dữ liệu trong đó, bạn cần kết nối với cơ sở dữ liệu. Bạn có thể kết nối với cơ sở dữ liệu hiện có hoặc tạo của riêng bạn.

Bạn sẽ cần các đặc quyền đặc biệt để tạo hoặc xóa cơ sở dữ liệu MySQL. Vì vậy, nếu bạn có quyền truy cập vào người dùng gốc, bạn có thể tạo bất kỳ cơ sở dữ liệu nào.

Thí dụ

Ví dụ sau thiết lập kết nối với MYSQL và tạo cơ sở dữ liệu trong đó.

import mysql.connector

#establishing the connection
conn = mysql.connector.connect(user='root', password='password', host='127.0.0.1')

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Doping database MYDATABASE if already exists.
cursor.execute("DROP database IF EXISTS MyDatabase")

#Preparing query to create a database
sql = "CREATE database MYDATABASE";

#Creating a database
cursor.execute(sql)

#Retrieving the list of databases
print("List of databases: ")
cursor.execute("SHOW DATABASES")
print(cursor.fetchall())

#Closing the connection
conn.close()

Đầu ra

List of databases:
[
   ('information_schema',), 
   ('dbbug61332',), 
   ('details',), 
   ('exampledatabase',), 
   ('mydatabase',), 
   ('mydb',), 
   ('mysql',), 
   ('performance_schema',)
]

Câu lệnh CREATE TABLE được sử dụng để tạo bảng trong cơ sở dữ liệu MYSQL. Ở đây, bạn cần chỉ định tên của bảng và định nghĩa (tên và kiểu dữ liệu) của mỗi cột.

Cú pháp

Sau đây là cú pháp để tạo một bảng trong MySQL:

CREATE TABLE table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
);

Thí dụ

Truy vấn sau tạo một bảng có tên EMPLOYEE trong MySQL với năm cột là FIRST_NAME, LAST_NAME, AGE, SEX và INCOME.

mysql> CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT);
Query OK, 0 rows affected (0.42 sec)

Câu lệnh DESC cung cấp cho bạn mô tả của bảng được chỉ định. Sử dụng điều này, bạn có thể xác minh xem bảng đã được tạo hay chưa như hình dưới đây -

mysql> Desc Employee;
+------------+----------+------+-----+---------+-------+
| Field      | Type     | Null | Key | Default | Extra |
+------------+----------+------+-----+---------+-------+
| FIRST_NAME | char(20) | NO   |     | NULL    |       |
| LAST_NAME  | char(20) | YES  |     | NULL    |       |
| AGE        | int(11)  | YES  |     | NULL    |       |
| SEX        | char(1)  | YES  |     | NULL    |       |  
| INCOME     | float    | YES  |     | NULL    |       |
+------------+----------+------+-----+---------+-------+
5 rows in set (0.07 sec)

Tạo bảng trong MySQL bằng Python

Phương thức có tên là execute () (được gọi trên đối tượng con trỏ) chấp nhận hai biến−

  • Giá trị chuỗi đại diện cho truy vấn sẽ được thực thi.

  • Tham số args tùy chọn có thể là một bộ hoặc, danh sách hoặc, từ điển, đại diện cho các tham số của truy vấn (giá trị của trình giữ chỗ).

Nó trả về một giá trị số nguyên đại diện cho số hàng được thực hiện bởi truy vấn.

Khi kết nối cơ sở dữ liệu được thiết lập, bạn có thể tạo bảng bằng cách chuyển truy vấn CREATE TABLE tới execute() phương pháp.

Nói tóm lại, để tạo một bảng bằng python -

  • Nhập khẩu mysql.connector gói hàng.

  • Tạo một đối tượng kết nối bằng cách sử dụng mysql.connector.connect() bằng cách chuyển tên người dùng, mật khẩu, máy chủ (mặc định tùy chọn: localhost) và, cơ sở dữ liệu (tùy chọn) làm tham số cho nó.

  • Tạo một đối tượng con trỏ bằng cách gọi cursor() trên đối tượng kết nối đã tạo ở trên.

  • Sau đó, thực hiện câu lệnh CREATE TABLE bằng cách chuyển nó làm tham số choexecute() phương pháp.

Thí dụ

Ví dụ sau tạo một bảng có tên Employee trong cơ sở dữ liệu mydb.

import mysql.connector

#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb'
)

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Dropping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

#Creating table as per requirement
sql ='''CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT
)'''
cursor.execute(sql)

#Closing the connection
conn.close()

Bạn có thể thêm các hàng mới vào một bảng hiện có của MySQL bằng cách sử dụng INSERT INTOtuyên bố. Trong phần này, bạn cần chỉ định tên bảng, tên cột và giá trị (theo thứ tự như tên cột).

Cú pháp

Sau đây là cú pháp của câu lệnh INSERT INTO của MySQL.

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)
   VALUES (value1, value2, value3,...valueN);

Thí dụ

Truy vấn sau sẽ chèn một bản ghi vào bảng có tên EMPLOYEE.

INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Mac', 'Mohan', 20, 'M', 2000);

Bạn có thể xác minh các bản ghi của bảng sau khi thao tác chèn bằng cách sử dụng câu lệnh SELECT dưới dạng:

mysql> select * from Employee;
+------------+-----------+------+------+--------+
| FIRST_NAME | LAST_NAME | AGE  | SEX  | INCOME |
+------------+-----------+------+------+--------+
| Mac        | Mohan     |    20| M    | 2000   |
+------------+-----------+------+------+--------+
1 row in set (0.00 sec)

Không bắt buộc phải chỉ định luôn tên của các cột, nếu bạn chuyển các giá trị của một bản ghi theo cùng thứ tự của các cột trong bảng, bạn có thể thực hiện câu lệnh SELECT mà không có tên cột như sau:

INSERT INTO EMPLOYEE VALUES ('Mac', 'Mohan', 20, 'M', 2000);

Chèn dữ liệu vào bảng MySQL bằng Python

Các execute()phương thức (được gọi trên đối tượng con trỏ) chấp nhận một truy vấn làm tham số và thực hiện truy vấn đã cho. Để chèn dữ liệu, bạn cần chuyển câu lệnh MySQL INSERT làm tham số cho nó.

cursor.execute("""INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Mac', 'Mohan', 20, 'M', 2000)""")

Để chèn dữ liệu vào bảng trong MySQL bằng python -

  • nhập khẩu mysql.connector gói hàng.

  • Tạo một đối tượng kết nối bằng cách sử dụng mysql.connector.connect() bằng cách chuyển tên người dùng, mật khẩu, máy chủ (mặc định tùy chọn: localhost) và, cơ sở dữ liệu (tùy chọn) làm tham số cho nó.

  • Tạo một đối tượng con trỏ bằng cách gọi cursor() trên đối tượng kết nối đã tạo ở trên.

  • Sau đó, thực hiện INSERT bằng cách chuyển nó dưới dạng một tham số cho execute() phương pháp.

Thí dụ

Ví dụ sau thực hiện câu lệnh SQL INSERT để chèn bản ghi vào bảng EMPLOYEE -

import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb'
)
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
# Preparing SQL query to INSERT a record into the database.
sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
   VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
try:
   # Executing the SQL command
   cursor.execute(sql)
   # Commit your changes in the database
   conn.commit()
except:
   # Rolling back in case of error
   conn.rollback()
# Closing the connection
conn.close()

Tự động chèn giá trị

Bạn cũng có thể dùng “%s” thay vì các giá trị trong INSERT truy vấn MySQL và chuyển các giá trị cho chúng dưới dạng danh sách như hình dưới đây -

cursor.execute("""INSERT INTO EMPLOYEE VALUES ('Mac', 'Mohan', 20, 'M', 2000)""", 
   ('Ramya', 'Ramapriya', 25, 'F', 5000))

Thí dụ

Ví dụ sau sẽ chèn động một bản ghi vào bảng Nhân viên.

import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb'
)

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

# Preparing SQL query to INSERT a record into the database.
insert_stmt = (
   "INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)"
   "VALUES (%s, %s, %s, %s, %s)"
)
data = ('Ramya', 'Ramapriya', 25, 'F', 5000)
try:
   # Executing the SQL command
   cursor.execute(insert_stmt, data)
   # Commit your changes in the database
   conn.commit()
except:
   # Rolling back in case of error
   conn.rollback()
print("Data inserted")
# Closing the connection
conn.close()

Đầu ra

Data inserted

Bạn có thể truy xuất / tìm nạp dữ liệu từ một bảng trong MySQL bằng cách sử dụng truy vấn SELECT. Truy vấn / câu lệnh này trả về nội dung của bảng được chỉ định ở dạng bảng và nó được gọi là tập kết quả.

Cú pháp

Sau đây là cú pháp của truy vấn SELECT:

SELECT column1, column2, columnN FROM table_name;

Thí dụ

Giả sử chúng ta đã tạo một bảng trong MySQL với tên cricketers_data là -

CREATE TABLE cricketers_data(
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Date_Of_Birth date,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);

Và nếu chúng ta đã chèn 5 bản ghi vào nó bằng cách sử dụng câu lệnh INSERT như -

insert into cricketers_data values('Shikhar', 'Dhawan', DATE('1981-12-05'), 'Delhi', 'India');
insert into cricketers_data values('Jonathan', 'Trott', DATE('1981-04-22'), 'CapeTown', 'SouthAfrica');
insert into cricketers_data values('Kumara', 'Sangakkara', DATE('1977-10-27'), 'Matale', 'Srilanka');
insert into cricketers_data values('Virat', 'Kohli', DATE('1988-11-05'), 'Delhi', 'India');
insert into cricketers_data values('Rohit', 'Sharma', DATE('1987-04-30'), 'Nagpur', 'India');

Truy vấn sau truy xuất các giá trị FIRST_NAME và Quốc gia từ bảng.

mysql> select FIRST_NAME, Country from cricketers_data;
+------------+-------------+
| FIRST_NAME | Country     | 
+------------+-------------+
| Shikhar    | India       |
| Jonathan   | SouthAfrica |
| Kumara     | Srilanka    |
| Virat      | India       |
| Rohit      | India       |
+------------+-------------+
5 rows in set (0.00 sec)

Bạn cũng có thể truy xuất tất cả các giá trị của mỗi bản ghi bằng cách sử dụng * thể hiện tên của các cột là -

mysql> SELECT * from cricketers_data;
+------------+------------+---------------+----------------+-------------+
| First_Name | Last_Name  | Date_Of_Birth | Place_Of_Birth | Country     |
+------------+------------+---------------+----------------+-------------+
| Shikhar    | Dhawan     | 1981-12-05    | Delhi          | India       |
| Jonathan   | Trott      | 1981-04-22    | CapeTown       | SouthAfrica |
| Kumara     | Sangakkara | 1977-10-27    | Matale         | Srilanka    |
| Virat      | Kohli      | 1988-11-05    | Delhi          | India       |
| Rohit      | Sharma     | 1987-04-30    | Nagpur         | India       |
+------------+------------+---------------+----------------+-------------+
5 rows in set (0.00 sec)

Đọc dữ liệu từ bảng MYSQL bằng Python

ĐỌC Hoạt động trên bất kỳ cơ sở dữ liệu nào có nghĩa là lấy một số thông tin hữu ích từ cơ sở dữ liệu. Bạn có thể tìm nạp dữ liệu từ MYSQL bằng cách sử dụngfetch() được cung cấp bởi mysql-connector-python.

Lớp cursor.MySQLCursor cung cấp ba phương thức cụ thể làfetchall(), fetchmany() và, fetchone() Ở đâu,

  • Các fetchall()phương thức truy xuất tất cả các hàng trong tập kết quả của một truy vấn và trả về chúng dưới dạng danh sách các bộ giá trị. (Nếu chúng ta thực hiện điều này sau khi truy xuất một vài hàng, nó sẽ trả về những hàng còn lại).

  • Các fetchone() phương thức tìm nạp hàng tiếp theo trong kết quả của một truy vấn và trả về nó dưới dạng một bộ giá trị.

  • Các fetchmany() phương thức tương tự như fetchone () nhưng, nó truy xuất tập hợp các hàng tiếp theo trong tập kết quả của một truy vấn, thay vì một hàng duy nhất.

Note - Tập kết quả là một đối tượng được trả về khi một đối tượng con trỏ được sử dụng để truy vấn bảng.

rowcount - Đây là thuộc tính chỉ đọc và trả về số hàng đã bị ảnh hưởng bởi phương thức execute ().

Thí dụ

Ví dụ sau tìm nạp tất cả các hàng của bảng EMPLOYEE bằng cách sử dụng truy vấn SELECT và từ tập kết quả thu được ban đầu, chúng ta đang truy xuất hàng đầu tiên bằng phương thức fetchone () và sau đó tìm nạp các hàng còn lại bằng phương thức fetchall ().

import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb'
)

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Retrieving single row
sql = '''SELECT * from EMPLOYEE'''

#Executing the query
cursor.execute(sql)

#Fetching 1st row from the table
result = cursor.fetchone();
print(result)

#Fetching 1st row from the table
result = cursor.fetchall();
print(result)

#Closing the connection
conn.close()

Đầu ra

('Krishna', 'Sharma', 19, 'M', 2000.0)
[('Raj', 'Kandukuri', 20, 'M', 7000.0), ('Ramya', 'Ramapriya', 25, 'M', 5000.0)]

Ví dụ sau truy xuất hai hàng đầu tiên của bảng EMPLOYEE bằng phương thức fetchmany ().

Thí dụ

import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb'
)

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Retrieving single row
sql = '''SELECT * from EMPLOYEE'''

#Executing the query
cursor.execute(sql)

#Fetching 1st row from the table
result = cursor.fetchmany(size =2);
print(result)

#Closing the connection
conn.close()

Đầu ra

[('Krishna', 'Sharma', 19, 'M', 2000.0), ('Raj', 'Kandukuri', 20, 'M', 7000.0)]

Nếu bạn muốn tìm nạp, xóa hoặc cập nhật các hàng cụ thể của bảng trong MySQL, bạn cần sử dụng mệnh đề where để chỉ định điều kiện để lọc các hàng của bảng cho hoạt động.

Ví dụ, nếu bạn có một câu lệnh SELECT với mệnh đề where, chỉ những hàng thỏa mãn điều kiện đã chỉ định mới được truy xuất.

Cú pháp

Sau đây là cú pháp của mệnh đề WHERE:

SELECT column1, column2, columnN
FROM table_name
WHERE [condition]

Thí dụ

Giả sử chúng ta đã tạo một bảng trong MySQL với tên EMPLOYEES là -

mysql> CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT
);
Query OK, 0 rows affected (0.36 sec)

Và nếu chúng ta đã chèn 4 bản ghi vào nó bằng cách sử dụng câu lệnh INSERT như -

mysql> INSERT INTO EMPLOYEE VALUES
   ('Krishna', 'Sharma', 19, 'M', 2000),
   ('Raj', 'Kandukuri', 20, 'M', 7000),
   ('Ramya', 'Ramapriya', 25, 'F', 5000),
   ('Mac', 'Mohan', 26, 'M', 2000);

Sau câu lệnh MySQL truy xuất bản ghi của những nhân viên có thu nhập lớn hơn 4000.

mysql> SELECT * FROM EMPLOYEE WHERE INCOME > 4000;
+------------+-----------+------+------+--------+
| FIRST_NAME | LAST_NAME | AGE  | SEX  | INCOME | 
+------------+-----------+------+------+--------+
| Raj        | Kandukuri |    20| M    | 7000   |
| Ramya      | Ramapriya |    25| F    | 5000   |
+------------+-----------+------+------+--------+
2 rows in set (0.00 sec)

Mệnh đề WHERE sử dụng Python

Để tìm nạp các bản ghi cụ thể từ một bảng bằng chương trình python -

  • nhập khẩu mysql.connector gói hàng.

  • Tạo một đối tượng kết nối bằng cách sử dụng mysql.connector.connect() bằng cách chuyển tên người dùng, mật khẩu, máy chủ (mặc định tùy chọn: localhost) và, cơ sở dữ liệu (tùy chọn) làm tham số cho nó.

  • Tạo một đối tượng con trỏ bằng cách gọi cursor() trên đối tượng kết nối đã tạo ở trên.

  • Sau đó, thực hiện câu lệnh SELECT với mệnh đề WHERE , bằng cách chuyển nó dưới dạng tham số choexecute() phương pháp.

Thí dụ

Ví dụ sau tạo một bảng có tên Nhân viên và điền vào bảng đó. Sau đó, sử dụng mệnh đề where, nó truy xuất các bản ghi có giá trị tuổi nhỏ hơn 23.

import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb'
)

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
sql = '''CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT
)'''
cursor.execute(sql)
#Populating the table
insert_stmt = "INSERT INTO EMPLOYEE (
   FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (%s, %s, %s, %s, %s
)"
data = [
   ('Krishna', 'Sharma', 19, 'M', 2000), 
   ('Raj', 'Kandukuri', 20, 'M', 7000),
   ('Ramya', 'Ramapriya', 25, 'F', 5000),
   ('Mac', 'Mohan', 26, 'M', 2000)
]
cursor.executemany(insert_stmt, data)
conn.commit()
#Retrieving specific records using the where clause
cursor.execute("SELECT * from EMPLOYEE WHERE AGE <23")
print(cursor.fetchall())

#Closing the connection
conn.close()

Đầu ra

[('Krishna', 'Sharma', 19, 'M', 2000.0), ('Raj', 'Kandukuri', 20, 'M', 7000.0)]

Trong khi tìm nạp dữ liệu bằng truy vấn SELECT, bạn có thể sắp xếp kết quả theo thứ tự mong muốn (tăng dần hoặc giảm dần) bằng mệnh đề OrderBy. Theo mặc định, mệnh đề này sắp xếp các kết quả theo thứ tự tăng dần, nếu bạn cần sắp xếp chúng theo thứ tự giảm dần, bạn cần sử dụng “DESC” một cách rõ ràng.

Cú pháp

Sau đây là cú pháp CHỌN cột-danh sách

FROM table_name
[WHERE condition]
[ORDER BY column1, column2,.. columnN] [ASC | DESC]; of the ORDER BY clause:

Thí dụ

Giả sử chúng ta đã tạo một bảng trong MySQL với tên EMPLOYEES là -

mysql> CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT);
Query OK, 0 rows affected (0.36 sec)

Và nếu chúng ta đã chèn 4 bản ghi vào nó bằng cách sử dụng câu lệnh INSERT như -

mysql> INSERT INTO EMPLOYEE VALUES
   ('Krishna', 'Sharma', 19, 'M', 2000),
   ('Raj', 'Kandukuri', 20, 'M', 7000),
   ('Ramya', 'Ramapriya', 25, 'F', 5000),
   ('Mac', 'Mohan', 26, 'M', 2000);

Câu lệnh sau truy xuất nội dung của bảng EMPLOYEE theo thứ tự tăng dần của độ tuổi.

mysql> SELECT * FROM EMPLOYEE ORDER BY AGE;
+------------+-----------+------+------+--------+
| FIRST_NAME | LAST_NAME | AGE  | SEX  | INCOME | 
+------------+-----------+------+------+--------+
| Krishna    | Sharma    |    19| M    | 2000   |
| Raj        | Kandukuri |    20| M    | 7000   |
| Ramya      | Ramapriya |    25| F    | 5000   |
| Mac        | Mohan     |    26| M    | 2000   |
+------------+-----------+------+------+--------+
4 rows in set (0.04 sec)

Bạn cũng có thể truy xuất dữ liệu theo thứ tự giảm dần bằng cách sử dụng DESC dưới dạng:

mysql> SELECT * FROM EMPLOYEE ORDER BY FIRST_NAME, INCOME DESC;
+------------+-----------+------+------+--------+
| FIRST_NAME | LAST_NAME | AGE  | SEX  | INCOME |
+------------+-----------+------+------+--------+
| Krishna    | Sharma    |    19| M    | 2000   |
| Mac        | Mohan     |    26| M    | 2000   |
| Raj        | Kandukuri |    20| M    | 7000   |
| Ramya      | Ramapriya |    25| F    | 5000   |
+------------+-----------+------+------+--------+
4 rows in set (0.00 sec)

Mệnh đề ORDER BY sử dụng Python

Để truy xuất nội dung của một bảng theo thứ tự cụ thể, hãy gọi execute() trên đối tượng con trỏ và, chuyển câu lệnh SELECT cùng với mệnh đề ORDER BY, làm tham số cho nó.

Thí dụ

Trong ví dụ sau, chúng ta đang tạo một bảng có tên và Nhân viên, điền nó vào và lấy lại các bản ghi của nó theo thứ tự (tăng dần) tuổi của chúng, sử dụng mệnh đề ORDER BY.

import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb'
)

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
sql = '''CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT
)'''
cursor.execute(sql)

#Populating the table
insert_stmt = "INSERT INTO EMPLOYEE 
   (FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (%s, %s, %s, %s, %s)"
data = [
   ('Krishna', 'Sharma', 26, 'M', 2000), 
   ('Raj', 'Kandukuri', 20, 'M', 7000),
   ('Ramya', 'Ramapriya', 29, 'F', 5000),
   ('Mac', 'Mohan', 26, 'M', 2000)
]
cursor.executemany(insert_stmt, data)
conn.commit()

#Retrieving specific records using the ORDER BY clause
cursor.execute("SELECT * from EMPLOYEE ORDER BY AGE")

print(cursor.fetchall())

#Closing the connection
conn.close()

Đầu ra

[
   ('Raj', 'Kandukuri', 20, 'M', 7000.0), 
   ('Krishna', 'Sharma', 26, 'M', 2000.0), 
   ('Mac', 'Mohan', 26, 'M', 2000.0), 
   ('Ramya', 'Ramapriya', 29, 'F', 5000.0)
]

Theo cách tương tự, bạn có thể lấy dữ liệu từ một bảng theo thứ tự giảm dần bằng mệnh đề ORDER BY.

Thí dụ

import mysql.connector

#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb'
)

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Retrieving specific records using the ORDERBY clause
cursor.execute("SELECT * from EMPLOYEE ORDER BY INCOME DESC")

print(cursor.fetchall())

#Closing the connection
conn.close()

Đầu ra

[
   ('Raj', 'Kandukuri', 20, 'M', 7000.0), 
   ('Ramya', 'Ramapriya', 29, 'F', 5000.0), 
   ('Krishna', 'Sharma', 26, 'M', 2000.0), 
   ('Mac', 'Mohan', 26, 'M', 2000.0)
]

CẬP NHẬT Thao tác trên bất kỳ cơ sở dữ liệu nào cũng cập nhật một hoặc nhiều bản ghi đã có sẵn trong cơ sở dữ liệu. Bạn có thể cập nhật giá trị của các bản ghi hiện có trong MySQL bằng cách sử dụng câu lệnh UPDATE. Để cập nhật các hàng cụ thể, bạn cần sử dụng mệnh đề WHERE cùng với nó.

Cú pháp

Sau đây là cú pháp của câu lệnh UPDATE trong MySQL:

UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];

Bạn có thể kết hợp N số điều kiện bằng cách sử dụng toán tử VÀ hoặc HOẶC.

Thí dụ

Giả sử chúng ta đã tạo một bảng trong MySQL với tên EMPLOYEES là -

mysql> CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT
);
Query OK, 0 rows affected (0.36 sec)

Và nếu chúng ta đã chèn 4 bản ghi vào nó bằng cách sử dụng câu lệnh INSERT như -

mysql> INSERT INTO EMPLOYEE VALUES
   ('Krishna', 'Sharma', 19, 'M', 2000),
   ('Raj', 'Kandukuri', 20, 'M', 7000),
   ('Ramya', 'Ramapriya', 25, 'F', 5000),
   ('Mac', 'Mohan', 26, 'M', 2000);

Sau tuyên bố MySQL tăng tuổi của tất cả nhân viên nam thêm một tuổi -

mysql> UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = 'M';
Query OK, 3 rows affected (0.06 sec) 9. 
Rows matched: 3 Changed: 3 Warnings: 0

Nếu bạn truy xuất nội dung của bảng, bạn có thể thấy các giá trị được cập nhật dưới dạng:

mysql> select * from EMPLOYEE;
+------------+-----------+------+------+--------+
| FIRST_NAME | LAST_NAME | AGE  | SEX  | INCOME |
+------------+-----------+------+------+--------+
| Krishna    | Sharma    |    20| M    | 2000   |
| Raj        | Kandukuri |    21| M    | 7000   |
| Ramya      | Ramapriya |    25| F    | 5000   |
| Mac        | Mohan     |    27| M    | 2000   |
+------------+-----------+------+------+--------+
4 rows in set (0.00 sec)

Cập nhật nội dung của bảng bằng Python

Để cập nhật các bản ghi trong bảng trong MySQL bằng python -

  • nhập khẩu mysql.connector gói hàng.

  • Tạo một đối tượng kết nối bằng cách sử dụng mysql.connector.connect() bằng cách chuyển tên người dùng, mật khẩu, máy chủ (mặc định tùy chọn: localhost) và, cơ sở dữ liệu (tùy chọn) làm tham số cho nó.

  • Tạo một đối tượng con trỏ bằng cách gọi cursor() trên đối tượng kết nối đã tạo ở trên.

  • Sau đó, thực hiện câu lệnh UPDATE bằng cách chuyển nó làm tham số choexecute() phương pháp.

Thí dụ

Ví dụ sau đây làm tăng tuổi của tất cả nam giới thêm một tuổi.

import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb'
)

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Preparing the query to update the records
sql = '''UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = 'M' '''

try:
   # Execute the SQL command
   cursor.execute(sql)
   # Commit your changes in the database
   conn.commit()
except:
   # Rollback in case there is any error
   conn.rollback()

#Retrieving data
sql = '''SELECT * from EMPLOYEE'''

#Executing the query
cursor.execute(sql)

#Displaying the result
print(cursor.fetchall())

#Closing the connection
conn.close()

Đầu ra

[
   ('Krishna', 'Sharma', 22, 'M', 2000.0), 
   ('Raj', 'Kandukuri', 23, 'M', 7000.0), 
   ('Ramya', 'Ramapriya', 26, 'F', 5000.0)
]

Để xóa bản ghi khỏi bảng MySQL, bạn cần sử dụng DELETE FROMtuyên bố. Để xóa các bản ghi cụ thể, bạn cần sử dụng mệnh đề WHERE cùng với nó.

Cú pháp

Sau đây là cú pháp của truy vấn DELETE trong MYSQL:

DELETE FROM table_name [WHERE Clause]

Thí dụ

Giả sử chúng ta đã tạo một bảng trong MySQL với tên EMPLOYEES là -

mysql> CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT
);
Query OK, 0 rows affected (0.36 sec)

Và nếu chúng ta đã chèn 4 bản ghi vào nó bằng cách sử dụng câu lệnh INSERT như -

mysql> INSERT INTO EMPLOYEE VALUES
   ('Krishna', 'Sharma', 19, 'M', 2000),
   ('Raj', 'Kandukuri', 20, 'M', 7000),
   ('Ramya', 'Ramapriya', 25, 'F', 5000),
   ('Mac', 'Mohan', 26, 'M', 2000);

Sau câu lệnh MySQL xóa bản ghi của nhân viên với FIRST_NAME ”Mac” .

mysql> DELETE FROM EMPLOYEE WHERE FIRST_NAME = 'Mac';
Query OK, 1 row affected (0.12 sec)

Nếu bạn truy xuất nội dung của bảng, bạn chỉ có thể thấy 3 bản ghi vì chúng tôi đã xóa một bản ghi.

mysql> select * from EMPLOYEE;
+------------+-----------+------+------+--------+
| FIRST_NAME | LAST_NAME | AGE  | SEX  | INCOME | 
+------------+-----------+------+------+--------+
| Krishna    | Sharma    |    20| M    | 2000   |
| Raj        | Kandukuri |    21| M    | 7000   |
| Ramya      | Ramapriya |    25| F    | 5000   |
+------------+-----------+------+------+--------+
3 rows in set (0.00 sec)

Nếu bạn thực hiện câu lệnh DELETE mà không có mệnh đề WHERE, tất cả các bản ghi từ bảng được chỉ định sẽ bị xóa.

mysql> DELETE FROM EMPLOYEE;
Query OK, 3 rows affected (0.09 sec)

Nếu bạn truy xuất nội dung của bảng, bạn sẽ nhận được một tập hợp trống như hình dưới đây -

mysql> select * from EMPLOYEE;
Empty set (0.00 sec)

Xóa bản ghi của bảng bằng Python

Thao tác DELETE là bắt buộc khi bạn muốn xóa một số bản ghi khỏi cơ sở dữ liệu của mình.

Để xóa các bản ghi trong bảng -

  • nhập khẩu mysql.connector gói hàng.

  • Tạo một đối tượng kết nối bằng cách sử dụng mysql.connector.connect() bằng cách chuyển tên người dùng, mật khẩu, máy chủ (mặc định tùy chọn: localhost) và, cơ sở dữ liệu (tùy chọn) làm tham số cho nó.

  • Tạo đối tượng con trỏ bằng cách gọi phương thức con trỏ () trên đối tượng kết nối đã tạo ở trên.

  • Sau đó, thực hiện DELETE bằng cách chuyển nó dưới dạng một tham số cho execute() phương pháp.

Thí dụ

Chương trình sau sẽ xóa tất cả các bản ghi khỏi NHÂN VIÊN có TUỔI trên 20 -

import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb'
)

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Retrieving single row
print("Contents of the table: ")
cursor.execute("SELECT * from EMPLOYEE")
print(cursor.fetchall())

#Preparing the query to delete records
sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (25)
try:
   # Execute the SQL command
   cursor.execute(sql)
   # Commit your changes in the database
   conn.commit()
except:
   # Roll back in case there is any error
   conn.rollback()

#Retrieving data
print("Contents of the table after delete operation ")
cursor.execute("SELECT * from EMPLOYEE")
print(cursor.fetchall())

#Closing the connection
conn.close()

Đầu ra

Contents of the table:
[
   ('Krishna', 'Sharma', 22, 'M', 2000.0), 
   ('Raj', 'Kandukuri', 23, 'M', 7000.0), 
   ('Ramya', 'Ramapriya', 26, 'F', 5000.0), 
   ('Mac', 'Mohan', 20, 'M', 2000.0), 
   ('Ramya', 'Rama priya', 27, 'F', 9000.0)
]
Contents of the table after delete operation:
[
   ('Krishna', 'Sharma', 22, 'M', 2000.0), 
   ('Raj', 'Kandukuri', 23, 'M', 7000.0), 
   ('Mac', 'Mohan', 20, 'M', 2000.0)
]

Bạn có thể xóa toàn bộ bảng bằng cách sử dụng DROP TABLEtuyên bố. Bạn chỉ cần xác định tên bảng mà bạn cần xóa.

Cú pháp

Sau đây là cú pháp của câu lệnh DROP TABLE trong MySQL:

DROP TABLE table_name;

Thí dụ

Trước khi xóa một bảng, hãy lấy danh sách các bảng bằng câu lệnh SHOW TABLES như sau:

mysql> SHOW TABLES;
+-----------------+
| Tables_in_mydb  |
+-----------------+
| contact         |
| cricketers_data |
| employee        |
| sample          |
| tutorials       |
+-----------------+
5 rows in set (0.00 sec)

Câu lệnh sau loại bỏ hoàn toàn bảng có tên mẫu khỏi cơ sở dữ liệu:

mysql> DROP TABLE sample;
Query OK, 0 rows affected (0.29 sec)

Vì chúng tôi đã xóa mẫu có tên bảng khỏi MySQL, nếu bạn lấy lại danh sách các bảng, bạn sẽ không tìm thấy mẫu tên bảng trong đó.

mysql> SHOW TABLES;
+-----------------+
| Tables_in_mydb  |
+-----------------+
| contact         |
| cricketers_data | 
| employee        |
| tutorials       |
+-----------------+
4 rows in set (0.00 sec)

Xóa bảng bằng Python

Bạn có thể bỏ một bảng bất cứ khi nào bạn cần, bằng cách sử dụng câu lệnh DROP của MYSQL, nhưng bạn cần phải rất cẩn thận khi xóa bất kỳ bảng nào hiện có vì dữ liệu bị mất sẽ không được phục hồi sau khi xóa một bảng.

Để thả một bảng từ cơ sở dữ liệu MYSQL bằng cách sử dụng python, hãy gọi execute() trên đối tượng con trỏ và chuyển câu lệnh drop làm tham số cho nó.

Thí dụ

Bảng sau đây loại bỏ một bảng có tên EMPLOYEE từ cơ sở dữ liệu.

import mysql.connector
#establishing the connection conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb'
)

#Creating a cursor object using the cursor() method cursor = conn.cursor()

#Retrieving the list of tables print("List of tables in the database: ")   
   cursor.execute("SHOW Tables") print(cursor.fetchall())

#Doping EMPLOYEE table if already exists cursor.execute("DROP TABLE EMPLOYEE") 
   print("Table dropped... ")

#Retrieving the list of tables print(
   "List of tables after dropping the EMPLOYEE table: "
) 
cursor.execute("SHOW Tables") print(cursor.fetchall())

#Closing the connection 
conn.close()

Đầu ra

List of tables in the database:
[('employee',), ('employeedata',), ('sample',), ('tutorials',)]
Table dropped...
List of tables after dropping the EMPLOYEE table:
[('employeedata',), ('sample',), ('tutorials',)]

Chỉ thả bảng nếu tồn tại

Nếu bạn cố gắng bỏ một bảng không tồn tại trong cơ sở dữ liệu, một lỗi sẽ xảy ra như sau:

mysql.connector.errors.ProgrammingError: 1051 (42S02): Unknown table 'mydb.employee'

Bạn có thể ngăn lỗi này bằng cách xác minh xem bảng có tồn tại hay không trước khi xóa, bằng cách thêm IF TỒN TẠI vào câu lệnh DELETE.

Example

import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb'
)

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Retrieving the list of tables
print("List of tables in the database: ")
cursor.execute("SHOW Tables")
print(cursor.fetchall())

#Doping EMPLOYEE table if already exists
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
print("Table dropped... ")

#Retrieving the list of tables
print("List of tables after dropping the EMPLOYEE table: ")
cursor.execute("SHOW Tables")
print(cursor.fetchall())

#Closing the connection
conn.close()

Output

List of tables in the database:
[('employeedata',), ('sample',), ('tutorials',)]
Table dropped...
List of tables after dropping the EMPLOYEE table:
[('employeedata',), ('sample',),
('tutorials',)]

Trong khi tìm nạp các bản ghi nếu bạn muốn giới hạn chúng bằng một số cụ thể, bạn có thể làm như vậy bằng cách sử dụng mệnh đề LIMIT của MYSQL.

Thí dụ

Giả sử chúng ta đã tạo một bảng trong MySQL với tên EMPLOYEES là -

mysql> CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT
);
Query OK, 0 rows affected (0.36 sec)

Và nếu chúng ta đã chèn 4 bản ghi vào nó bằng cách sử dụng câu lệnh INSERT như -

mysql> INSERT INTO EMPLOYEE VALUES
   ('Krishna', 'Sharma', 19, 'M', 2000),
   ('Raj', 'Kandukuri', 20, 'M', 7000),
   ('Ramya', 'Ramapriya', 25, 'F', 5000),
   ('Mac', 'Mohan', 26, 'M', 2000);

Câu lệnh SQL sau truy xuất hai bản ghi đầu tiên của bảng Nhân viên bằng cách sử dụng mệnh đề LIMIT.

SELECT * FROM EMPLOYEE LIMIT 2;
+------------+-----------+------+------+--------+
| FIRST_NAME | LAST_NAME | AGE  | SEX  | INCOME |
+------------+-----------+------+------+--------+
| Krishna    | Sharma    |    19| M    | 2000   |
| Raj        | Kandukuri |    20| M    | 7000   |
+------------+-----------+------+------+--------+
2 rows in set (0.00 sec)

Mệnh đề giới hạn sử dụng Python

Nếu bạn gọi execute() trên đối tượng con trỏ bằng cách chuyển truy vấn SELECT cùng với mệnh đề LIMIT, bạn có thể truy xuất số lượng bản ghi cần thiết.

Thí dụ

Ví dụ python sau tạo và điền vào một bảng có tên EMPLOYEE và bằng cách sử dụng mệnh đề LIMIT, nó tìm nạp hai bản ghi đầu tiên của nó.

import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb'
)

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Retrieving single row
sql = '''SELECT * from EMPLOYEE LIMIT 2'''

#Executing the query
cursor.execute(sql)

#Fetching the data
result = cursor.fetchall();
print(result)

#Closing the connection
conn.close()

Đầu ra

[('Krishna', 'Sharma', 26, 'M', 2000.0), ('Raj', 'Kandukuri', 20, 'M', 7000.0)]

LIMIT với OFFSET

Nếu bạn cần giới hạn các bản ghi bắt đầu từ bản ghi thứ n (không phải bản ghi đầu tiên), bạn có thể làm như vậy, sử dụng OFFSET cùng với LIMIT.

Example

import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb'
)

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Retrieving single row
sql = '''SELECT * from EMPLOYEE LIMIT 2 OFFSET 2'''

#Executing the query
cursor.execute(sql)

#Fetching the data
result = cursor.fetchall();
print(result)

#Closing the connection
conn.close()

Output

[('Ramya', 'Ramapriya', 29, 'F', 5000.0), ('Mac', 'Mohan', 26, 'M', 2000.0)]

Khi bạn đã chia dữ liệu trong hai bảng, bạn có thể tìm nạp các bản ghi kết hợp từ hai bảng này bằng cách sử dụng Kết hợp.

Thí dụ

Giả sử chúng ta đã tạo một bảng với tên EMPLOYEE và nhập dữ liệu vào nó như hình dưới đây:

mysql> CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT,
   CONTACT INT
);
Query OK, 0 rows affected (0.36 sec)
INSERT INTO Employee VALUES 
   ('Ramya', 'Rama Priya', 27, 'F', 9000, 101), 
   ('Vinay', 'Bhattacharya', 20, 'M', 6000, 102), 
   ('Sharukh', 'Sheik', 25, 'M', 8300, 103), 
   ('Sarmista', 'Sharma', 26, 'F', 10000, 104), 
   ('Trupthi', 'Mishra', 24, 'F', 6000, 105);
Query OK, 5 rows affected (0.08 sec)
Records: 5 Duplicates: 0 Warnings: 0

Sau đó, nếu chúng ta đã tạo một bảng khác và điền nó là -

CREATE TABLE CONTACT(
   ID INT NOT NULL,
   EMAIL CHAR(20) NOT NULL,
   PHONE LONG,
   CITY CHAR(20)
);
Query OK, 0 rows affected (0.49 sec)
INSERT INTO CONTACT (ID, EMAIL, CITY) VALUES 
   (101, '[email protected]', 'Hyderabad'), 
   (102, '[email protected]', 'Vishakhapatnam'), 
   (103, '[email protected]', 'Pune'), 
   (104, '[email protected]', 'Mumbai'); 
Query OK, 4 rows affected (0.10 sec)
Records: 4 Duplicates: 0 Warnings: 0

Câu lệnh sau truy xuất dữ liệu kết hợp các giá trị trong hai bảng này:

mysql> SELECT * from EMPLOYEE INNER JOIN CONTACT ON EMPLOYEE.CONTACT = CONTACT.ID;
+------------+--------------+------+------+--------+---------+-----+--------------------+-------+----------------+
| FIRST_NAME | LAST_NAME    | AGE  | SEX  | INCOME | CONTACT | ID  | EMAIL              | PHONE | CITY           |
+------------+--------------+------+------+--------+---------+-----+--------------------+-------+----------------+
| Ramya      | Rama Priya   | 27   | F    | 9000   | 101     | 101 | [email protected] | NULL  | Hyderabad      |
| Vinay      | Bhattacharya | 20   | M    | 6000   | 102     | 102 | [email protected]    | NULL  | Vishakhapatnam |
| Sharukh    | Sheik        | 25   | M    | 8300   | 103     | 103 | [email protected] | NULL  | Pune           |
| Sarmista   | Sharma       | 26   | F    | 10000  | 104     | 104 | [email protected]    | NULL  | Mumbai         |
+------------+--------------+------+------+--------+---------+-----+--------------------+-------+----------------+
4 rows in set (0.00 sec)

MYSQL THAM GIA bằng Python

Ví dụ sau lấy dữ liệu từ hai bảng trên được kết hợp bởi cột liên hệ của bảng NHÂN VIÊN và cột ID của bảng LIÊN HỆ.

Thí dụ

import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb'
)

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Retrieving single row
sql = '''SELECT * from EMPLOYEE INNER JOIN CONTACT ON EMPLOYEE.CONTACT = CONTACT.ID'''

#Executing the query
cursor.execute(sql)

#Fetching 1st row from the table
result = cursor.fetchall();

print(result)

#Closing the connection
conn.close()

Đầu ra

[
   ('Krishna', 'Sharma', 26, 'M', 2000, 101, 101, '[email protected]', 9848022338, 'Hyderabad'), 
   ('Raj', 'Kandukuri', 20, 'M', 7000, 102, 102, '[email protected]', 9848022339, 'Vishakhapatnam'), 
   ('Ramya', 'Ramapriya', 29, 'F', 5000, 103, 103, '[email protected]', 9848022337, 'Pune'), 
   ('Mac', 'Mohan', 26, 'M', 2000, 104, 104, '[email protected]', 9848022330, 'Mumbai')
]

MySQLCursor của mysql-connector-python (và các thư viện tương tự) được sử dụng để thực thi các câu lệnh để giao tiếp với cơ sở dữ liệu MySQL.

Sử dụng các phương thức của nó, bạn có thể thực thi các câu lệnh SQL, tìm nạp dữ liệu từ các tập kết quả, gọi các thủ tục.

Bạn có thể tạo Cursor sử dụng phương thức con trỏ () của đối tượng / lớp Connection.

Thí dụ

import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb'
)
#Creating a cursor object using the cursor() method
cursor = conn.cursor()

Phương pháp

Sau đây là các phương thức khác nhau được cung cấp bởi lớp / đối tượng Cursor.

Sr.No Phương pháp & Mô tả
1

callproc()

Phương thức này được sử dụng để gọi cơ sở dữ liệu MySQL thủ tục hiện có.

2

close()

Phương thức này được sử dụng để đóng đối tượng con trỏ hiện tại.

3

Info()

Phương pháp này cung cấp thông tin về truy vấn cuối cùng.

4

executemany()

Phương thức này chấp nhận một chuỗi danh sách các tham số. Chuẩn bị một truy vấn MySQL và thực thi nó với tất cả các tham số.

5

execute()

Phương thức này chấp nhận một truy vấn MySQL làm tham số và thực hiện truy vấn đã cho.

6

fetchall()

Phương thức này truy xuất tất cả các hàng trong tập kết quả của một truy vấn và trả về chúng dưới dạng danh sách các bộ giá trị. (Nếu chúng ta thực hiện điều này sau khi lấy một vài hàng, nó sẽ trả về những hàng còn lại)

7

fetchone()

Phương thức này tìm nạp hàng tiếp theo trong kết quả của một truy vấn và trả về nó dưới dạng một bộ giá trị.

số 8

fetchmany()

Phương thức này tương tự như fetchone () nhưng, nó truy xuất tập hợp các hàng tiếp theo trong tập kết quả của một truy vấn, thay vì một hàng.

9

fetchwarnings()

Phương thức này trả về các cảnh báo được tạo bởi truy vấn được thực thi cuối cùng.

Tính chất

Sau đây là các thuộc tính của lớp Cursor:

Sr.No Kê khai tài sản
1

column_names

Đây là thuộc tính chỉ đọc trả về danh sách chứa các tên cột của tập hợp kết quả.

2

description

Đây là thuộc tính chỉ đọc trả về danh sách chứa mô tả các cột trong tập kết quả.

3

lastrowid

Đây là thuộc tính chỉ đọc, nếu có bất kỳ cột nào được tăng tự động trong bảng, thì nó sẽ trả về giá trị được tạo cho cột đó trong thao tác INSERT hoặc UPDATE cuối cùng.

4

rowcount

Điều này trả về số hàng được trả về / cập nhật trong trường hợp hoạt động CHỌN và CẬP NHẬT.

5

statement

Thuộc tính này trả về câu lệnh được thực thi cuối cùng.