Выполнение SQL-запросов в БД MariaDB (MySQL) и PostgreSQL на Python 3

Краткая инструкция по выполнению SQL-запросов с использованием языка Python 3 в базе данных MariaDB (или MySQL) и PostgreSQL.

За основу берём скрипты подключения Python к СУБД MariaDB (или MySQL) и к СУБД PostgreSQL, так как в нём прописано условие, которое при ошибке подключения выводит соответствующее сообщение.

Само по себе успешное подключение предполагает дальнейшую работу с базой данных. Поэтому вместо строчки

print('Подключение к БД прошло успешно…')

можно начинать писать скрипт.

Запрос может быть любым. В нашем примере запрос будет выбирать все колонки и строки из таблицы shop_goods:

SELECT * FROM shop_goods;

Этот запрос мы завернём в переменную query

query = "SELECT * FROM shop_goods"

Затем выполним этот запрос

with connection.cursor() as cursor:
    cursor.execute(query)

В переменную result запишем результат выполнения этого запроса

result = cursor.fetchall()

и обойдём его циклом:

for row in result:
    print("<p>", row[0], ". ", row[2], " - ", row[3], " - ", row[4], " рублей - ", row[5], " штук ", "</p>")

После этого закрываем соединение с базой данных

connection.close()

Полностью рабочий скрипт для СУБД MariaDB (MySQL) будет выглядеть примерно так:

#!/usr/bin/python3

print('Content-Type: text/html; charset=utf-8 \r\n')
print('<h1>MariaDB or MySQL query example</h1>')

import mysql.connector as mariadb
from mysql.connector import Error

try:
    connection = mariadb.connect(user = 'db_user', password = 'yourPassword', database = 'test_db', host = 'localhost', port = '3306')

    query = "SELECT * FROM shop_goods"
    with connection.cursor() as cursor:
        cursor.execute(query)
        result = cursor.fetchall()
        for row in result:
            print("<p>", row[0], ". ", row[2], " - ", row[3], " - ", row[4], " рублей - ", row[5], " штук ", "</p>")

    connection.close()

except Error as error:
    print(f'<h2>Ошибка подключения к БД: {error} </h2>')

а для СУБД PostgreSQL — так:

#!/usr/bin/python3

print('Content-Type: text/html; charset=utf-8 \r\n')
print('<h1>PostgreSQL query example</h1>')

import psycopg2 as pgsql
from psycopg2 import OperationalError

try:
    connection = pgsql.connect(database='test_db', user='db_user', password='yourPassword', host='localhost', port='5432')

    query = "SELECT * FROM shop_goods"
    with connection.cursor() as cursor:
        cursor.execute(query)
        result = cursor.fetchall()
        for row in result:
            print("<p>", row[0], ". ", row[2], " - ", row[3], " - ", row[4], " рублей - ", row[5], " штук ", "</p>")

    connection.close()

except OperationalError as error:
    print(f'<h2>Ошибка подключения к БД: {error} </h2>')

Результат выполнения данного скрипта будет выглядеть так:

1. Ноутбук ASUS VivoBook A540L - Ноутбуки - 15000.00 рублей - 10 штук

2. МФУ Kyocera Ecosys M2535fdn - МФУ - 22000.00 рублей - 5 штук

3. Сумка для ноутбука 15-дюймов, серая - Сумки и чехлы - 3500.00 рублей - 6 штук

4. Картридж Cactus CS-CE285A - Картриджи - 950.00 рублей - 15 штук

5. SSD диск GIGABYTE 2.5" 256 Гб SATA III NAND TLC (GP-GSTFS31256GTND) - SSD-диски - 3000.00 рублей - 18 штук

6. USB флешка 64Gb Kingston DTX/64Gb USB 3.2 Gen 1 (USB 3.0) - USB-диски, флешки - 750.00 рублей - 35 штук

7. USB флешка 128Gb Kingston DTX/128Gb USB 3.2 Gen 1 (USB 3.0) - USB-диски, флешки - 1300.00 рублей - 25 штук

8. Телевизор Samsung UE50TU8000UX, 4K Ultra HD, черный - Телевизоры - 46800.00 рублей - 3 штук

9. Кронштейн ONKRON M15, для LCD телевизора 32"-75", черный - Кронштейны - 4100.00 рублей - 8 штук

10. Телевизор LG 43LM5700PLA, черный - Телевизоры - 32000.00 рублей - 7 штук

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *