Настройка базы данных MySQL на Python
Базы данных имеют решающее значение для хранения и управления данными. В этой статье вы научитесь создавать базу данных MySQL и взаимодействовать с ней на Python.
Установка PyMySQL
PyMySQL — это клиентская библиотека MySQL, написанная на Python, которая позволяет создавать базы данных MySQL и взаимодействовать с ними.
Это сторонняя библиотека, поэтому ее необходимо установить в свою систему. Чтобы установить ее с помощью pip
, выполните следующую строку в своем терминале:
pip install pymysql
--------------------- OR ---------------------
python -m pip install pymysql
Примечание: в вашей системе должен быть установлен сервер MySQL.
Создание базы данных MySQL
Для начала импортируйте библиотеку PyMySQL в среду вашего проекта для обработки операций с базой данных.
# Importing the required lib
import pymysql
PyMySQL включает функцию connect()
, которая принимает необходимые аргументы, такие как host, username, password, database name и т.д., для установления соединения с сервером базы данных.
На этом этапе вам понадобится доступ к имени пользователя и паролю вашего сервера MySQL.
# Initialize connection with server
mysql_db = pymysql.connect(
host="localhost",
user="root",
password="********"
)
В приведенном выше коде host
, это где размещен ваш сервер MySQL, в данном случае он размещен на локальном компьютере, поэтому указывается значение "localhost"
.
user
это имя пользователя вашего сервера MySQL, "root"
используется по умолчанию, и password
это имя, которое вы указали при первой настройке сервера.
Для взаимодействия с базой данных MySQL необходимо сначала создать для нее объект курсора с помощью функции cursor()
.
# Database cursor
cursor = mysql_db.cursor()
Этот шаг включает в себя выполнение запроса MySQL для создания базы данных на сервере MySQL с использованием курсора mysql_db.cursor()
объекта.
# SQL query to create database
cursor.execute("CREATE DATABASE IF NOT EXISTS pokemon_db")
cursor.execute("SHOW DATABASES")
cursor.execute()
выполняет SQL-запрос. Первый запрос говорит: «Создайте базу данных с именем pokemon_db
, если она еще не существует», а второй запрос говорит: «Показать все базы данных, находящиеся на сервере».
Наконец, отключите соединение с базой данных и объект курсора с помощью функции close()
.
# Closing the database cursor and connection
cursor.close()
mysql_db.close()
Когда вы запустите код, на консоли ничего не появится, но ваша база данных создана на сервере. Вы можете проверить MySQL Workbench.
Чтобы отобразить все базы данных на сервере с помощью Python, добавьте в скрипт следующий код:
# Displaying databases
for databases in cursor:
print(databases)
Теперь, когда вы перезапустите код, вы увидите, что все базы данных, находящиеся на сервере, отображаются в консоли.
('books_db',)
('information_schema',)
('mysql',)
('performance_schema',)
('pokemon_db',)
('sys',)
Вы можете видеть, что отображается ваша вновь созданная база данных pokemon_db( )
.
Взаимодействие с базой данных
Вы можете просто взаимодействовать с этой недавно созданной базой данных MySQL, добавляя таблицы и столбцы и выполняя операции CRUD.
Создание таблицы базы данных
Вы создали базу данных MySQL под названием pokemon_db
. Теперь вам необходимо создать таблицу с некоторыми полями для хранения данных, связанных с полями.
Создайте новый файл в каталоге вашего проекта и поместите в него следующий код:
# Importing PyMySQL and cursors
import pymysql.cursors
# Initialize connection with database
mysql_db = pymysql.connect(
host="localhost",
user="root",
password="********",
database="pokemon_db",
cursorclass=pymysql.cursors.DictCursor
)
# Database cursor
cursor = mysql_db.cursor()
# Function to create a table
def create_db_table():
cursor.execute('''
CREATE TABLE IF NOT EXISTS pokemon (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(500) NOT NULL UNIQUE,
cp INT(50) NOT NULL,
hp INT(50) NOT NULL
)
''')
mysql_db.commit()
if __name__ == "__main__":
create_db_table()
cursor.close()
На этот раз в функции connect()
указывается имя базы данных pokemon_db
. Это означает, что будет установлено соединение с базой данных pokemon_db
.
cursorclass
установлено значение cursors.DictCursor
, который возвращает результаты в словарном формате.
Функция create_db_table()
создает таблицу с именем "pokemon"
, содержащую следующие поля:
id
: это поле автоматически присваивает серийный номер каждой записи, сделанной в базе данных по причине"AUTO_INCREMENT"
.name
: сохраняет имя покемона.cp
: хранит боевую мощь покемонов.hp
: хранит высокую силу покемона.
Изменения сохраняются в базе данных с помощью mysql_db.commit()
. После запуска кода будет создана таблица с указанными полями.
Добавление данных в базу данных
...
# Adding data to the database
def add_entry():
# SQL query
query = '''
INSERT INTO `pokemon` (`name`, `cp`, `hp`)
VALUES (%s, %s, %s)
'''
# Adding three entries
cursor.execute(query, ('Charizard', 120, 200))
cursor.execute(query, ('Pikachu', 60, 100))
cursor.execute(query, ('Squirtle', 78, 102))
# Committing the changes
mysql_db.commit()
if __name__ == "__main__":
# create_db_table()
add_entry()
cursor.close()
Функция add_entry()
определена и добавлена в код из предыдущего раздела.
Внутри функции определен SQL-запрос для вставки данных таблицы pokemon
в соответствующие поля. Затем функция выполняет SQL-запрос несколько раз, каждый раз с разными значениями имени покемона, боевой мощи cp
и высокой силы hp
.
После добавления записей функция фиксирует изменения в базе данных, используя mysql_db.commit()
.
Когда вы запустите функцию, данные будут добавлены в базу данных.
Чтение данных из базы данных
...
# Reading data from the database
def read_entry():
# SQL query
query = '''
SELECT `name`, `cp`, `hp` FROM `pokemon`;
'''
cursor.execute(query)
# Fetching data from the database
for data in cursor.fetchall():
print(
data['name'],
data['cp'],
data['hp']
)
if __name__ == "__main__":
# create_db_table()
# add_entry()
read_entry()
cursor.close()
Функция read_entry()
выполняет SQL-запрос, который выбирает все значения из таблицы pokemon
.
Затем данные извлекаются с помощью функции cursor.fetchall()
.
Вы получите все записи, вставленные в базу данных, когда запустите код.
Charizard 120 200
Pikachu 60 100
Squirtle 78 102
Обновление данных в базе данных
...
# Function to update an entry
def update_entry():
query = '''
UPDATE `pokemon`
SET `cp` = %s
WHERE `id` = %s
'''
# Executing SQL query with values
cursor.execute(query, (140, 2))
# Committing the changes
mysql_db.commit()
if __name__ == "__main__":
# create_db_table()
# add_entry()
update_entry()
read_entry()
cursor.close()
Функция update_entry()
определена, и внутри нее записывается SQL-запрос для обновления таблицы pokemon
путем установки значения поля cp
для предоставленного файла id
.
Функция cursor.execute()
выполняет запрос, который обновляет cp
покемонов до 140, где id
равно 2.
Затем изменения сохраняются в базе данных с помощью mysql_db.commit()
. Когда вы запустите код, вы увидите изменение значения.
Charizard 140 200
Pikachu 60 100
Squirtle 78 102
Вы можете видеть, что значение Charizard cp
было обновлено, и теперь оно равно 140, поскольку его значение id
равно 2, что может отличаться в вашей ситуации.
Удаление данных из базы данных
# Function to delete the entry
def delete_entry():
query = '''
DELETE FROM `pokemon`
WHERE `id` = %s
'''
# Executing SQL query for deletion
cursor.execute(query, 2)
# Committing the changes
mysql_db.commit()
if __name__ == "__main__":
# create_db_table()
# add_entry()
# update_entry()
delete_entry()
read_entry()
cursor.close()
Функция delete_entry()
выполняет SQL-запрос для удаления всей записи из pokemon
таблицы с указанным id
.
Когда вы запустите код, вы увидите, что вся запись с идентификатором, равным 2, была удалена.
Pikachu 60 100
Squirtle 78 102
Заключение
Вы можете работать с базами данных MySQL на Python, используя клиентские библиотеки MySQL, и в этой статье вы узнали, как создавать базы данных MySQL и взаимодействовать с ними с помощью библиотеки PyMySQL.
Сначала вы научились создавать базу данных MySQL, используя библиотеку PyMySQL на Python.
После создания базы данных вы взаимодействовали и выполняли следующие операции:
- Создали таблицу базы данных MySQL.
- Вставили данные
- Прочитали эти данные
- Обновили данные
- Удалили данные
Существуют различные библиотеки для создания базы данных MySQL на Python, а процесс создания базы данных и взаимодействия с ней практически идентичен описанному в этой статье.