Python MySQL - Краткое руководство

Стандарт Python для интерфейсов баз данных - Python DB-API. Большинство интерфейсов баз данных Python соответствуют этому стандарту.

Вы можете выбрать подходящую базу данных для своего приложения. Python Database API поддерживает широкий спектр серверов баз данных, таких как -

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

Вот список доступных интерфейсов базы данных Python - интерфейсы и API базы данных Python . Вы должны загрузить отдельный модуль DB API для каждой базы данных, к которой вам нужен доступ. Например, если вам нужно получить доступ к базе данных Oracle, а также к базе данных MySQL, вы должны загрузить модули базы данных Oracle и MySQL.

Что такое mysql-connector-python?

MySQL Python / Connector - это интерфейс для подключения к серверу базы данных MySQL из Python. Он реализует API базы данных Python и построен на базе MySQL.

Как установить mysql-connector-python?

Прежде всего, вам нужно убедиться, что вы уже установили python на свой компьютер. Для этого откройте командную строку, введите в ней python и нажмите Enter . Если python уже установлен в вашей системе, эта команда отобразит его версию, как показано ниже -

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.
>>>

Теперь нажмите ctrl + z, а затем Enter, чтобы выйти из оболочки python и создать папку (в которой вы намеревались установить соединитель Python-MySQL) с именем Python_MySQL как -

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

Проверить PIP

PIP - это менеджер пакетов на Python, с помощью которого вы можете устанавливать различные модули / пакеты в Python. Следовательно, чтобы установить Mysql-python mysql-connector-python, вам необходимо убедиться, что на вашем компьютере установлен PIP и его местоположение добавлено в путь.

Вы можете сделать это, выполнив команду pip. Если в вашей системе не было PIP или вы не добавили его местоположение вPath переменная окружения, вы получите сообщение об ошибке:

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

Чтобы установить PIP, загрузите get-pip.py в созданную выше папку и с помощью команды перейдите по ней и установите pip следующим образом:

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

Установка mysql-connector-python

После установки Python и PIP откройте командную строку и обновите pip (необязательно), как показано ниже -

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

Затем откройте командную строку в режиме администратора и установите python MySQL connect как -

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

Проверка

Чтобы проверить установку, создайте образец сценария Python со следующей строкой в ​​нем.

import mysql.connector

Если установка прошла успешно, при ее выполнении вы не должны получить никаких ошибок -

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

Установка Python с нуля

Проще говоря, если вам нужно установить Python с нуля. Посетите домашнюю страницу Python .

Нажми на Downloads , вы будете перенаправлены на страницу загрузок, на которой есть ссылки на последнюю версию Python для различных платформ, выберите одну и загрузите ее.

Например, мы скачали python-3.7.4.exe (для Windows). Запустите процесс установки, дважды щелкнув загруженный файл .exe.

Установите флажок «Добавить Python 3.7 в путь» и продолжите установку. После завершения этого процесса в вашей системе будет установлен python.

Чтобы подключиться к MySQL, (один из способов) откройте командную строку MySQL в вашей системе, как показано ниже -

Здесь запрашивается пароль; вам необходимо ввести пароль, который вы установили для пользователя по умолчанию (root) во время установки.

Затем устанавливается соединение с MySQL, отображающее следующее сообщение -

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.

Вы можете отключиться от базы данных MySQL в любое время, используя exitв командной строке mysql> .

mysql> exit
Bye

Установление соединения с MySQL с помощью Python

Перед установкой соединения с базой данных MySQL с помощью python предположим:

  • Мы создали базу данных с именем mydb.

  • Мы создали таблицу EMPLOYEE со столбцами FIRST_NAME, LAST_NAME, AGE, SEX и INCOME.

  • Учетные данные, которые мы используем для подключения к MySQL, - это имя пользователя - root, пароль - password.

Вы можете установить соединение с помощью конструктора connect () . Он принимает имя пользователя, пароль, хост и имя базы данных, к которой необходимо подключиться (необязательно), и возвращает объект класса MySQLConnection.

пример

Ниже приведен пример подключения к базе данных 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()

Вывод

При выполнении этот скрипт производит следующий вывод -

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

Вы также можете установить соединение с MySQL, передав учетные данные (имя пользователя, пароль, имя хоста и имя базы данных) в connection.MySQLConnection() как показано ниже -

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()

Вы можете создать базу данных в MYSQL, используя запрос CREATE DATABASE.

Синтаксис

Ниже приведен синтаксис запроса CREATE DATABASE:

CREATE DATABASE name_of_the_database

пример

Следующий оператор создает базу данных с именем mydb в MySQL -

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

Если вы наблюдаете за списком баз данных с помощью оператора SHOW DATABASES, вы можете наблюдать в нем вновь созданную базу данных, как показано ниже -

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

Создание базы данных в MySQL с использованием Python

После установления соединения с MySQL, чтобы управлять данными в нем, вам необходимо подключиться к базе данных. Вы можете подключиться к существующей базе данных или создать свою собственную.

Вам потребуются особые привилегии для создания или удаления базы данных MySQL. Поэтому, если у вас есть доступ к пользователю root, вы можете создать любую базу данных.

пример

В следующем примере устанавливается соединение с MYSQL и создается база данных в нем.

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()

Вывод

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

Оператор CREATE TABLE используется для создания таблиц в базе данных MYSQL. Здесь вам нужно указать имя таблицы и определение (имя и тип данных) каждого столбца.

Синтаксис

Ниже приведен синтаксис для создания таблицы в MySQL:

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

пример

Следующий запрос создает таблицу с именем EMPLOYEE в MySQL с пятью столбцами, а именно FIRST_NAME, LAST_NAME, AGE, SEX и 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)

Оператор DESC дает вам описание указанной таблицы. Используя это, вы можете проверить, была ли создана таблица или нет, как показано ниже -

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)

Создание таблицы в MySQL с использованием Python

Метод с именем execute () (вызываемый для объекта курсора) принимает две переменные:

  • Значение типа String, представляющее запрос, который нужно выполнить.

  • Необязательный параметр args, который может быть кортежем, списком или словарем, представляющим параметры запроса (значения заполнителей).

Он возвращает целочисленное значение, представляющее количество строк, обработанных запросом.

Как только соединение с базой данных установлено, вы можете создавать таблицы, передавая запрос CREATE TABLE в execute() метод.

Короче говоря, чтобы создать таблицу с помощью python -

  • импорт mysql.connector пакет.

  • Создайте объект подключения, используя mysql.connector.connect() , передав ему имя пользователя, пароль, хост (необязательно по умолчанию: localhost) и базу данных (необязательно) в качестве параметров.

  • Создайте объект курсора, вызвав cursor() в созданном выше объекте подключения.

  • Затем выполните оператор CREATE TABLE , передав его в качестве параметра вexecute() метод.

пример

В следующем примере создается таблица с именем Employee в базе данных 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()

Вы можете добавлять новые строки в существующую таблицу MySQL, используя INSERT INTOзаявление. В этом случае вам необходимо указать имя таблицы, имена столбцов и значения (в том же порядке, что и имена столбцов).

Синтаксис

Ниже приведен синтаксис оператора MySQL INSERT INTO.

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

пример

Следующий запрос вставляет запись в таблицу с именем EMPLOYEE.

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

Вы можете проверить записи таблицы после операции вставки, используя оператор SELECT как -

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

Необязательно указывать имена столбцов всегда, если вы передаете значения записи в том же порядке, что и столбцы таблицы, вы можете выполнить оператор SELECT без имен столбцов следующим образом:

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

Вставка данных в таблицу MySQL с помощью Python

В execute()Метод (вызываемый для объекта курсора) принимает запрос в качестве параметра и выполняет данный запрос. Чтобы вставить данные, вам необходимо передать инструкцию MySQL INSERT в качестве параметра.

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

Чтобы вставить данные в таблицу в MySQL с помощью python -

  • импорт mysql.connector пакет.

  • Создайте объект подключения, используя mysql.connector.connect() , передав ему имя пользователя, пароль, хост (необязательно по умолчанию: localhost) и базу данных (необязательно) в качестве параметров.

  • Создайте объект курсора, вызвав cursor() в созданном выше объекте подключения.

  • Затем выполните INSERT оператор, передав его как параметр в execute() метод.

пример

В следующем примере выполняется инструкция SQL INSERT для вставки записи в таблицу 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()

Динамическая вставка значений

Вы также можете использовать “%s” вместо значений в INSERT запрос MySQL и передать им значения в виде списков, как показано ниже -

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

пример

В следующем примере запись динамически вставляется в таблицу сотрудников.

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()

Вывод

Data inserted

Вы можете извлекать / извлекать данные из таблицы в MySQL, используя запрос SELECT. Этот запрос / инструкция возвращает содержимое указанной таблицы в табличной форме и вызывается как набор результатов.

Синтаксис

Ниже приведен синтаксис запроса SELECT -

SELECT column1, column2, columnN FROM table_name;

пример

Предположим, мы создали таблицу в MySQL с именем cricketers_data как -

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

И если мы вставили в него 5 записей, используя инструкции INSERT как -

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');

Следующий запрос извлекает значения FIRST_NAME и Country из таблицы.

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)

Вы также можете получить все значения каждой записи, используя * instated имени столбца как -

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)

Чтение данных из таблицы MYSQL с помощью Python

READ Операция с любой базой данных означает получение некоторой полезной информации из базы данных. Вы можете получить данные из MYSQL, используяfetch() метод, предоставляемый mysql-connector-python.

Класс cursor.MySQLCursor предоставляет три метода, а именно:fetchall(), fetchmany() и, fetchone() где,

  • В fetchall()Метод извлекает все строки в результирующем наборе запроса и возвращает их как список кортежей. (Если мы выполним это после получения нескольких строк, он вернет оставшиеся).

  • В fetchone() Метод выбирает следующую строку в результате запроса и возвращает ее как кортеж.

  • В fetchmany() похож на fetchone (), но он извлекает следующий набор строк в результирующем наборе запроса вместо одной строки.

Note - Набор результатов - это объект, который возвращается, когда объект курсора используется для запроса таблицы.

rowcount - Это атрибут только для чтения и возвращает количество строк, на которые повлиял метод execute ().

пример

В следующем примере извлекаются все строки таблицы EMPLOYEE с помощью запроса SELECT, и из полученного набора результатов сначала мы извлекаем первую строку с помощью метода fetchone (), а затем извлекаем оставшиеся строки с помощью метода 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()

Вывод

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

В следующем примере извлекаются первые две строки таблицы EMPLOYEE с помощью метода fetchmany ().

пример

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()

Вывод

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

Если вы хотите получить, удалить или обновить определенные строки таблицы в MySQL, вам необходимо использовать предложение where, чтобы указать условие для фильтрации строк таблицы для операции.

Например, если у вас есть оператор SELECT с предложением where, будут извлечены только те строки, которые удовлетворяют указанному условию.

Синтаксис

Ниже приводится синтаксис предложения WHERE -

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

пример

Предположим, мы создали таблицу в MySQL с именем EMPLOYEES как -

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)

И если мы вставили в него 4 записи, используя инструкции INSERT как -

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);

Следующий оператор MySQL извлекает записи сотрудников, чей доход превышает 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)

Предложение WHERE с использованием Python

Чтобы получить определенные записи из таблицы с помощью программы python -

  • импорт mysql.connector пакет.

  • Создайте объект подключения, используя mysql.connector.connect() , передав ему имя пользователя, пароль, хост (необязательно по умолчанию: localhost) и базу данных (необязательно) в качестве параметров.

  • Создайте объект курсора, вызвав cursor() в созданном выше объекте подключения.

  • Затем выполните оператор SELECT с предложением WHERE , передав его в качестве параметра вexecute() метод.

пример

В следующем примере создается таблица с именем Employee и заполняется ее. Затем, используя предложение where, он извлекает записи со значением возраста менее 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()

Вывод

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

При получении данных с помощью запроса SELECT вы можете отсортировать результаты в желаемом порядке (по возрастанию или по убыванию) с помощью предложения OrderBy. По умолчанию это предложение сортирует результаты в порядке возрастания, если вам нужно расположить их в порядке убывания, вам нужно явно использовать «DESC».

Синтаксис

Ниже приведен синтаксис SELECT column-list.

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

пример

Предположим, мы создали таблицу в MySQL с именем EMPLOYEES как -

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)

И если мы вставили в него 4 записи, используя инструкции INSERT как -

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);

Следующий оператор извлекает содержимое таблицы EMPLOYEE в порядке возрастания возраста.

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)

Вы также можете получать данные в порядке убывания, используя DESC как -

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)

Предложение ORDER BY с использованием Python

Чтобы получить содержимое таблицы в определенном порядке, вызовите execute() для объекта курсора и передайте оператор SELECT вместе с предложением ORDER BY в качестве параметра для него.

пример

В следующем примере мы создаем таблицу с именем и сотрудником, заполняем ее и получаем ее записи в порядке возрастания (возрастания), используя предложение 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()

Вывод

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

Таким же образом вы можете получить данные из таблицы в порядке убывания с помощью предложения 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()

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

print(cursor.fetchall())

#Closing the connection
conn.close()

Вывод

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

UPDATE Операция в любой базе данных обновляет одну или несколько записей, которые уже доступны в базе данных. Вы можете обновить значения существующих записей в MySQL с помощью оператора UPDATE. Чтобы обновить определенные строки, вам необходимо использовать предложение WHERE вместе с ним.

Синтаксис

Ниже приведен синтаксис оператора UPDATE в MySQL:

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

Вы можете объединить N условий, используя операторы И или ИЛИ.

пример

Предположим, мы создали таблицу в MySQL с именем EMPLOYEES как -

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)

И если мы вставили в него 4 записи, используя инструкции INSERT как -

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);

Следующее утверждение MySQL увеличивает возраст всех сотрудников-мужчин на один год -

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

Если вы извлечете содержимое таблицы, вы можете увидеть обновленные значения как -

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)

Обновление содержимого таблицы с помощью Python

Чтобы обновить записи в таблице в MySQL с помощью python -

  • импорт mysql.connector пакет.

  • Создайте объект подключения, используя mysql.connector.connect() , передав ему имя пользователя, пароль, хост (необязательно по умолчанию: localhost) и базу данных (необязательно) в качестве параметров.

  • Создайте объект курсора, вызвав cursor() в созданном выше объекте подключения.

  • Затем выполните оператор UPDATE , передав его в качестве параметра вexecute() метод.

пример

В следующем примере возраст всех мужчин увеличивается на один год.

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()

Вывод

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

Чтобы удалить записи из таблицы MySQL, вам необходимо использовать DELETE FROMзаявление. Чтобы удалить определенные записи, вам необходимо использовать предложение WHERE вместе с ним.

Синтаксис

Ниже приведен синтаксис запроса DELETE в MYSQL:

DELETE FROM table_name [WHERE Clause]

пример

Предположим, мы создали таблицу в MySQL с именем EMPLOYEES как -

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)

И если мы вставили в него 4 записи, используя инструкции INSERT как -

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);

Следующий оператор MySQL удаляет запись о сотруднике с FIRST_NAME «Mac» .

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

Если вы получите содержимое таблицы, вы увидите только 3 записи, так как мы удалили одну.

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)

Если вы выполните оператор DELETE без предложения WHERE, все записи из указанной таблицы будут удалены.

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

Если вы получите содержимое таблицы, вы получите пустой набор, как показано ниже -

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

Удаление записей из таблицы с помощью Python

Операция DELETE требуется, если вы хотите удалить некоторые записи из своей базы данных.

Чтобы удалить записи в таблице -

  • импорт mysql.connector пакет.

  • Создайте объект подключения, используя mysql.connector.connect() , передав ему имя пользователя, пароль, хост (необязательно по умолчанию: localhost) и базу данных (необязательно) в качестве параметров.

  • Создайте объект курсора, вызвав метод cursor () для созданного выше объекта подключения.

  • Затем выполните DELETE оператор, передав его как параметр в execute() метод.

пример

Следующая программа удаляет все записи из СОТРУДНИКА, возраст которого превышает 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()

Вывод

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)
]

Вы можете удалить всю таблицу, используя DROP TABLEзаявление. Вам просто нужно указать имя таблицы, которую нужно удалить.

Синтаксис

Ниже приведен синтаксис оператора DROP TABLE в MySQL:

DROP TABLE table_name;

пример

Перед удалением таблицы получите список таблиц с помощью оператора SHOW TABLES следующим образом:

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

Следующий оператор полностью удаляет таблицу с именем sample из базы данных:

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

Поскольку мы удалили таблицу с именем sample из MySQL, если вы снова получите список таблиц, вы не найдете в нем образец имени таблицы.

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

Удаление таблицы с помощью Python

Вы можете удалить таблицу, когда вам нужно, используя оператор DROP в MYSQL, но вам нужно быть очень осторожным при удалении любой существующей таблицы, потому что потерянные данные не будут восстановлены после удаления таблицы.

Чтобы удалить таблицу из базы данных MYSQL с помощью python, вызовите execute() для объекта курсора и передайте ему оператор drop в качестве параметра.

пример

Следующая таблица удаляет из базы данных таблицу с именем 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()

#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()

Вывод

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

Удалить таблицу, только если существует

Если вы попытаетесь удалить таблицу, которой нет в базе данных, возникает ошибка:

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

Вы можете предотвратить эту ошибку, проверив, существует ли таблица перед удалением, добавив IF EXISTS в оператор 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',)]

При извлечении записей, если вы хотите ограничить их определенным числом, вы можете сделать это, используя предложение LIMIT в MYSQL.

пример

Предположим, мы создали таблицу в MySQL с именем EMPLOYEES как -

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)

И если мы вставили в него 4 записи, используя инструкции INSERT как -

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);

Следующий оператор SQL извлекает первые две записи таблицы Employee с помощью предложения 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)

Предельное предложение с использованием Python

Если вы вызовете execute() для объекта курсора, передав запрос SELECT вместе с предложением LIMIT, вы можете получить необходимое количество записей.

пример

В следующем примере Python создается и заполняется таблица с именем EMPLOYEE, и с помощью предложения LIMIT извлекаются первые две ее записи.

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()

Вывод

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

LIMIT со смещением

Если вам нужно ограничить записи, начиная с n-й записи (не с 1-й), вы можете сделать это, используя OFFSET вместе с 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)]

Когда вы разделили данные на две таблицы, вы можете получить объединенные записи из этих двух таблиц с помощью объединений.

пример

Предположим, мы создали таблицу с именем EMPLOYEE и заполнили ее данными, как показано ниже -

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

Затем, если мы создали другую таблицу и заполнили ее как -

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

Следующий оператор извлекает данные, объединяющие значения в этих двух таблицах -

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 JOIN с использованием Python

В следующем примере извлекаются данные из двух вышеупомянутых таблиц, объединенных по столбцу контактов таблицы EMPLOYEE и столбцу ID таблицы CONTACT.

пример

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()

Вывод

[
   ('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 mysql-connector-python (и подобных библиотек) используется для выполнения операторов для связи с базой данных MySQL.

Используя его методы, вы можете выполнять операторы SQL, извлекать данные из наборов результатов, вызывать процедуры.

Вы можете создать Cursor объект, используя метод cursor () объекта / класса Connection.

пример

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()

Методы

Ниже приведены различные методы, предоставляемые классом / объектом Cursor.

Старший Нет Методы и описание
1

callproc()

Этот метод используется для вызова существующих процедур базы данных MySQL.

2

close()

Этот метод используется для закрытия текущего объекта курсора.

3

Info()

Этот метод дает информацию о последнем запросе.

4

executemany()

Этот метод принимает серию списков параметров list. Подготавливает запрос MySQL и выполняет его со всеми параметрами.

5

execute()

Этот метод принимает запрос MySQL в качестве параметра и выполняет данный запрос.

6

fetchall()

Этот метод извлекает все строки в результирующем наборе запроса и возвращает их в виде списка кортежей. (Если мы выполним это после получения нескольких строк, он вернет оставшиеся)

7

fetchone()

Этот метод выбирает следующую строку в результате запроса и возвращает ее как кортеж.

8

fetchmany()

Этот метод похож на fetchone (), но он извлекает следующий набор строк в результирующем наборе запроса вместо одной строки.

9

fetchwarnings()

Этот метод возвращает предупреждения, сгенерированные последним выполненным запросом.

Свойства

Ниже приведены свойства класса Cursor -

Старший Нет Описание недвижимости
1

column_names

Это свойство только для чтения, которое возвращает список, содержащий имена столбцов набора результатов.

2

description

Это свойство только для чтения, которое возвращает список, содержащий описание столбцов в наборе результатов.

3

lastrowid

Это свойство доступно только для чтения. Если в таблице есть какие-либо автоматически увеличивающиеся столбцы, возвращается значение, сгенерированное для этого столбца в последней операции INSERT или UPDATE.

4

rowcount

Это возвращает количество возвращенных / обновленных строк в случае операций SELECT и UPDATE.

5

statement

Это свойство возвращает последний выполненный оператор.