Как, используя Python, подключиться к SQL Server и выполнить запрос
Пересказ статьи Haq Nawaz. How to Connect & Query SQL Server using Python
Сегодня я расскажу, как подключиться к базам данных SQL, используя Python. Это распространенный вопрос, который возникает в серии ETL. Поэтому я решил рассмотреть его и направлять посетителей сюда, если у них возникнут проблемы с подключением.
Эта установка SQL Server позволит нам:
- Установить подключение к базе данных SQL Server из Python
- Выполнять запросы к базе данных SQL Server
- Извлекать и сохранять данные в фрейме данных
Весь код доступен на GitHub. Сопутствующее видео руководство доступно на YouTube.
Предварительно вам нужно установить и сконфигурировать SQL Server. Об этом здесь. Мы также будем использовать Jupyter notebook для отладки подключения к базе данных. Установку Jupyter notebook можно посмотреть на видео-ролике.
Для SQL Server мы используем SQL Server Native Client 11. Его можно загрузить отсюда. Просто загрузите установщик и выполните установку с параметрами по умолчанию. Можно проверить в редакторе регистра, что SQL Server Native Client установлен. Ключ регистра будет находиться здесь:
Если с установкой покончено, давайте запустим Jupyter notebook. Для подключения к базе данных SQL Server мы используем библиотеку pyodbc. Мы можем установить ее с помощью команды pip.
Эта команда установит библиотеку на нашу машину. Теперь мы можем импортировать ее в наш блокнот. Кроме того, давайте импортируем библиотеку pandas, чтобы мы могли читать данные и сохранять их в табличной структуре.
Определяем переменные для хранения учетных данных и сведений о базе данных. Используем функцию connect из библиотеки pyodbc для установки соединения с базой данных.
В функции connect мы конкатенируем переменную для создания строки подключения. Поскольку мы установили версию SQL Server Express, то именем экземпляра по умолчанию является SQLExpress. Если у вас установлена стандартная редакция или Developer Edition, то вам не требуется указывать экземпляр после имени сервера.
Нам требуется запрос SQL для тестирования подключения к указанной базе данных SQL Server. Давайте пошлем простой оператор SELECT для получения каких-нибудь данных из нашей базы данных.
Теперь мы можем использовать функцию запроса на чтение SQL в pandas для выполнения запроса к базе данных. У нас есть все необходимое для этой функции. Мы предоставляем это в переменной sql (запрос SQL) и переменной conn (информация для подключения).
Выполним ячейку блокнота с помощью клавиш SHIFT+ENTER. Если ячейка выполняется без ошибок, то вы успешно все завершили и можете продолжить создавать конвейеры ETL.
Наиболее частой ошибкой является отсутствие Native client. Проверьте его установку. Затем может быть выключен протокол TCP/IP. В этом случае откройте менеджер конфигурации SQL Server и выберите конфигурацию сети. Убедитесь, что протокол TCP/IP включен. Если нет, щелкните правой кнопкой и включите его. После внесения изменений не забудьте перезапустить службу SQL Server.
Ссылки по теме
1. Импорт данных из файла Excel в базу данных SQL Server с помощью Python
2. Краткое руководство по запуску кода Python в SQL Server
Предварительно вам нужно установить и сконфигурировать SQL Server. Об этом здесь. Мы также будем использовать Jupyter notebook для отладки подключения к базе данных. Установку Jupyter notebook можно посмотреть на видео-ролике.
Для SQL Server мы используем SQL Server Native Client 11. Его можно загрузить отсюда. Просто загрузите установщик и выполните установку с параметрами по умолчанию. Можно проверить в редакторе регистра, что SQL Server Native Client установлен. Ключ регистра будет находиться здесь:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Native Client 11.0\CurrentVersion
Если с установкой покончено, давайте запустим Jupyter notebook. Для подключения к базе данных SQL Server мы используем библиотеку pyodbc. Мы можем установить ее с помощью команды pip.
Pip install pyodbc
Эта команда установит библиотеку на нашу машину. Теперь мы можем импортировать ее в наш блокнот. Кроме того, давайте импортируем библиотеку pandas, чтобы мы могли читать данные и сохранять их в табличной структуре.
import pyodbc
import pandas as pd
Определяем переменные для хранения учетных данных и сведений о базе данных. Используем функцию connect из библиотеки pyodbc для установки соединения с базой данных.
#имя пользователя базы данных. Используйте конфигурационный файл
# или переменные окружения
uid = "etl"
#пароль базы данных. Используйте конфигурационный файл
# или переменные окружения
pwd = "demopass"
driver = "{SQL Server Native Client 11.0}"
server = "localhost" # или имя вашего компьютера
database = "AdventureWorksDW2019;"
В функции connect мы конкатенируем переменную для создания строки подключения. Поскольку мы установили версию SQL Server Express, то именем экземпляра по умолчанию является SQLExpress. Если у вас установлена стандартная редакция или Developer Edition, то вам не требуется указывать экземпляр после имени сервера.
conn = pyodbc.connect('DRIVER=' + driver + ';SERVER=' + server + '\SQLEXPRESS' + ';DATABASE=' + database + ';UID=' + uid + ';PWD=' + pwd)
Нам требуется запрос SQL для тестирования подключения к указанной базе данных SQL Server. Давайте пошлем простой оператор SELECT для получения каких-нибудь данных из нашей базы данных.
sql = "SELECT * FROM [dbo].[DimProductCategory]"
Теперь мы можем использовать функцию запроса на чтение SQL в pandas для выполнения запроса к базе данных. У нас есть все необходимое для этой функции. Мы предоставляем это в переменной sql (запрос SQL) и переменной conn (информация для подключения).
df = pd.read_sql_query(sql, conn)
df.head()
Выполним ячейку блокнота с помощью клавиш SHIFT+ENTER. Если ячейка выполняется без ошибок, то вы успешно все завершили и можете продолжить создавать конвейеры ETL.
Наиболее частой ошибкой является отсутствие Native client. Проверьте его установку. Затем может быть выключен протокол TCP/IP. В этом случае откройте менеджер конфигурации SQL Server и выберите конфигурацию сети. Убедитесь, что протокол TCP/IP включен. Если нет, щелкните правой кнопкой и включите его. После внесения изменений не забудьте перезапустить службу SQL Server.
Ссылки по теме
1. Импорт данных из файла Excel в базу данных SQL Server с помощью Python
2. Краткое руководство по запуску кода Python в SQL Server
Обратные ссылки
Автор не разрешил комментировать эту запись
Комментарии
Показывать комментарии Как список | Древовидной структурой