Это расширение к предыдущей статье 👀, в которой рассматриваются низкоуровневые методы установления соединения с базой данных SQL и выполнения запросов. Мы рассмотрим здесь эквивалентные высокоуровневые методы в SqlAlchemy и Pandas, чтобы сделать то же самое в меньшем количестве строк кода.
Предпосылки
Установите pyodbc, sqlalchemy и pandas, используя предпочитаемый вами менеджер пакетов
Затем установите необходимый драйвер для СУБД, к которой вы хотите подключиться. Например, если вы хотите подключиться к базе данных Microsoft SQL Server, вам необходимо скачать и установить драйвер из Microsoft, предварительно выбрав свою операционную систему.
Дополнительные сведения о pyodbc (Open DataBase Connectivity for Python) и СУБД (Система управления базами данных) см. 👀 в предыдущей статье
Создание движка SqlAlchemy 🚒
Хотя SqlAlchemy является объектно-реляционным сопоставителем, он также предлагает набор инструментов SQL. Чтобы подключиться к серверу, мы сначала создаем объект движка на основе URL в формате:
Для базы данных Microsoft SQL Server dialect
равно mssql
, а driver
равно pyodbc
. Затем мы передаем URL-адрес методу create_engine
:
Установление соединения 🔗
Теперь мы можем легко использовать connect
метод engine
для возврата объекта соединения cnxn
, который автоматически закрывается при использовании с диспетчером контекста:
Выполнение запроса с помощью Pandas 🐼
Предположим, что база данных, к которой мы подключены, имеет следующие 2 таблицы T_CUSTOMERS
и T_ADDRESSES
:
И мы хотим выполнить запрос в get_customer_details.sql
Pandas может читать инструкцию / файл SQL непосредственно в DataFrame при наличии соединения с помощью метода read_sql
. Мы также используем метод text
для составления текстового оператора, который передается в базу данных в основном без изменений:
Это было здорово! несколько строк кода для подключения и выполнения запроса в DataFrame 🙇
Выполнение параметризованного запроса 🐼❔
Что, если мы захотим использовать один и тот же запрос для другого клиента? Мы могли бы изменить его, но вместо этого мы можем использовать параметризованный запрос, чтобы он принимал любого клиента!
Просто замените имя клиента в запросе на :param_name
, например :lname
:
Мы выполняем новый запрос точно так же, как и раньше, но передаем новый аргумент params
, который представляет собой словарь param_name: param_value
:
Что следующее?
Начните использовать Docker 🐋 для Python и узнайте, как создать файл требований Python 📄 с помощью pipenv.
Удачного кодирования!