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