DevGang
Авторизоваться

Настройка базы данных 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, а процесс создания базы данных и взаимодействия с ней практически идентичен описанному в этой статье.

Источник:

#Python #MySQL
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу