Краткая инструкция по выполнению 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 штук