For this example we will be connecting to a SQL Server database using the Visual Studio Code (VS CODE), Windows Authentication and the pyodbc module. This is also similar to our recent post on connecting to MySQL using Visual Studio code in Linux and this post has more info on the Python extension if you do not have them installed.
We will setup a Python environment and install the module needed to connect to SQL Server using the currently logged in Windows user. In this example we are using Windows 10.
Prerequisites:
- Visual Studio Code
- SQL Server (version should be 2012 or later)
- Python 3.9.x
Quick Python Authentication Example
The important parameter is where the “username and password” were set, we are replacing it with “Trusted_Connection=yes” so the user account logged into Windows is used instead.
import pyodbc
conn_str = ("Driver={SQL Server};"
"Server=sqlserver\sqlinst1;"
"Database=DBName;"
"Trusted_Connection=yes;")
conn = pyodbc.connect(conn_str)
cursor = conn.cursor()
cursor.execute("SELECT TOP(1000) * FROM sometable")
for row in cursor:
print(row)
Update: This article was written using an older Driver. See the ODBC Driver for Linux article on Microsoft’s website for the version 18 driver. I haven’t had time to test but you may need to change…
"Driver={SQL Server};"
TO
"Driver={ODBC Driver 18 for SQL Server};"
Python and VS Code Terminal
We need to create an environment to work in. Start by creating a new folder and a new file called “main.py”, open “main.py” in Visual Studio code.
Then open the terminal using “Terminal -> New Terminal”.
Check that the python version is correct by typing:
python -V
python --version
Note: If you get stuck in a python shell just type “exit()” to get back to the terminal.
When you open a file with the extension of *.py you should see VS Code recognize this and display the Python version it is using in the bottom left corner. It will choose the system default version but we want to setup an environment to work within first.
Python Virtual Environment
The drivers and modules inside our environment will only be available to this project. This way it does not affect any other projects. You can create a new environment for each project to keep things well organized.
In terminal create a virtual environment folder called “myenv”
python -m venv myenv
We will reference our Interpreter here and activate the new environment, this is the Python.exe that the project will use. You should get a popup message,..
“We noticed a new virtual environment has been created. Do you want to select it for the workspace folder?”.
Click Yes and the Environment in the bottom left corner will change to “myenv”.
If there’s no popup you can just click the bottom left “Python 3.9.x” area and assign “\myenv\Scripts\python.exe”.
Activate the environment by typing:
.\myenv\Scripts\activate
The command prompt should now have the environment in parenthesis before the drive letter.
(myenv) PS C:\path\dbconnect
Install Python (pyodbc) SQL Server Driver
There are more than one SQL Server drivers for python, we are working with pyodbc. To install the driver type the following in your terminal window.
pip install pyodbc
Warning: You’re company might have a firewall that rejects the SSL certificates to connect using pip. You may need to contact your security department to install pyodbc.
CERTIFICATE_VERIFY_FAILED Workaround
We ran into this when installing pyodbc for Linux, If you get the following:
SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE_VERIFY_FAILED]
You can allow the pip install to continue by trusting the domains required:
pip install pyodbc --upgrade --trusted-host=pypi.python.org --trusted-host=pypi.org --trusted-host=files.pythonhosted.org
Pyodbc Parameters
import pyodbc
conn_str = ("Driver={SQL Server};"
"Server=sqlserver\sqlinst1;"
"Database=DBName;"
"Trusted_Connection=yes";)
conn = pyodbc.connect(conn_str)
cursor = conn.cursor()
cursor.execute("SELECT TOP(1000) * FROM sometable")
for row in cursor:
print(row)
With pyodbc installed we can use the same code to connect except we replace the username and password with “Trusted_Connection”. Executing this (db tales com) windows authentication or the user that is logged into Windows or the account that VS Code is running under, if you opened it using”Open AS”.
In the last blog I presented how to connect to Teradata
Database with teradata
python module. Today I’ll talk about how to connect to
SQL Server by python with following points:
- Required packages
- Connecting to SQL Server
- Checking databases in SQL Server
- Connecting to a specified database
- Extracting data with SQL query
Required packages
import pandas as pd
import pyodbc
pyodbc
is an open source Python module that makes accessing ODBC databases
simple. It implements the DB API 2.0 specification but is packed with even more
Pythonic convenience.
Connecting to SQL Server
cnxn = pyodbc.connect("DRIVER={SQL Server};"
"Server=sqlprod;"
"UID=xxx;"
"PWD=xxx;")
Let’s read this example line by line: the first two lines create a connection
to a SQL Server named “sqlprod” using SQL Server
as the connection method;
then we specify usename and password with UID
and PWD
.
Checking databases in SQL Server
After creating the connection to SQL Server, we can check databases in it.
req_db = ("SELECT * FROM master.sys.databases")
db = pd.read_sql(req_db, cnxn)
“db” returns rich information of all databases which are contained in SQL
Server, like name, database_id, source_database_id, create_date, etc.
Connecting to a specified database
By checking databases in SQL Server, we can now connect to a specified database.
cnxn_db1 = pyodbc.connect("DRIVER={SQL Server};"
"Server=sqlprod;"
"Database=db1;"
"UID=xxx;"
"PWD=xxx;")
Connecting to a database should specify the database-name in pyodbc.connect()
.
req = ("SELECT TOP 5 * FROM TABLE")
df = pd.read_sql(req, cnxn_db1)
To connect to “TABLE” of database “db1”, we need to precise the connection
“cnxn_db1” when execute SQL query with pandas.read_sql()
.
Reference
- M. Kleehammer, “pyodbc”, GitHub, 2017. [Online]. Available: https://github.com/mkleehammer/pyodbc
- “SQL Server Logo.png”, FANDOM, 2019. [Online]. Available: http://logos.wikia.com/wiki/Microsoft_SQL_Server
- Сначала мы увидим, как подключиться к SQL Server в Python и получить данные с помощью pyodbc.
- Потом мы получим данные из SQL Server, используя вызов хранимой процедуры в Python.
- Затем мы вставим данные в SQL Server, используя хранимую процедуру, в Python.
- Наконец, мы вставим данные из файла CSV в SQL Server.
Требования
- Сначала мы убедимся, что ядро баз данных SQL Server установлено.
- Потом нам понадобится редактор кода Python. Я буду использовать Visual Studio Code, но вы можете использовать любое ПО, которое предпочитаете.
- Затем нужна будет база данных Adventureworks2019. Вы можете использовать другую базу данных, но тогда вам придется модифицировать код примеров.
- Наконец, но необязательно, я рекомендую установить SQL Server Management Studio для проверки данных.
Как подключиться к SQL Server с помощью Python и получить данные, используя pyodbc
Следующий код выполнит подключение к SQL Server и получит информацию из таблицы person.person.
import pyodbc
# Информация подключения
# Ваш экземпляр SQL Server
sqlServerName = '.'
# Ваша база данных
databaseName = 'AdventureWorks2019'
# Используем аутентификацию Windows
trusted_connection = 'yes'
# Информация строки подключения
connenction_string = (
f"DRIVER={{SQL Server}};"
f"SERVER={sqlServerName};"
f"DATABASE={databaseName};"
f"Trusted_Connection={trusted_connection}"
)
try:
# Создаем подключение
connection = pyodbc.connect(connenction_string )
cursor = connection.cursor()
# Выполняем запрос к таблице Person.Person
query = 'SELECT * FROM Person.Person'
cursor.execute(query)
# печатаем результаты строки
rows = cursor.fetchall()
for row in rows:
print(row)
except pyodbc.Error as ex:
print("An error occurred in SQL Server:", ex)
# Закрываем подключение
finally:
if 'connection' in locals():
connection.close()
Сначала мы импортируем библиотеку pyodbc. Если у вас не установлена эта библиотека, вам необходимо установить pyodbc для Python ( в командной строке):
pip install pyodbc
Следующие строки выполнят подключение к локальному SQL Server, базе данных Adventureworks2019, используя аутентификацию Windows:
# Информация подключения
# Ваш экземпляр SQL Server
sqlServerName = '.'
# Ваша база данных
databaseName = 'AdventureWorks2019'
# Используем аутентификацию Windows
trusted_connection = 'yes'
# Информация строки подключения
connenction_string = (
f"DRIVER={{SQL Server}};"
f"SERVER={sqlServerName};"
f"DATABASE={databaseName};"
f"Trusted_Connection={trusted_connection}"
)
Затем мы используем подключение и выполняем запрос. Запрос получит данные из таблицы Person.Person базы данных Adventureworks2019.
# Создаем подключение
connection = pyodbc.connect(connenction_string )
cursor = connection.cursor()
# Выполняем запрос к таблице Person.Person
query = 'SELECT * FROM Person.Person'
cursor.execute(query)
Наконец, мы печатаем результаты и закрываем соединение.
# печатаем результаты строки
rows = cursor.fetchall()
for row in rows:
print(row)
except pyodbc.Error as ex:
print("An error occurred in SQL Server:", ex)
# Закрываем подключение
finally:
if 'connection' in locals():
connection.close()
Получить данные из SQL Server, используя хранимую процедуру, в Python
Теперь мы создадим код для подключения к SQL Server и вызова хранимой процедуры SQL Server в Python.
Сначала создадим код хранимой процедуры для получения информации из таблицы person.person.
CREATE PROCEDURE [dbo].[GetPersons]
AS
SELECT * FROM Person.Person;
Затем мы вызовем созданную хранимую процедуру, используя Python:
import pyodbc
# Информация подключения
sqlServerName = '.' # Ваш экземпляр SQL Server
databaseName = 'AdventureWorks2019'
trusted_connection = 'yes' # Используем аутентификацию Windows
# Информация строки подключения
connection_string = (
f"DRIVER={{SQL Server}};"
f"SERVER={sqlServerName};"
f"DATABASE={databaseName};"
f"Trusted_Connection={trusted_connection}"
)
try:
# Создаем подключение
connection = pyodbc.connect(connection_string)
cursor = connection.cursor()
# Выполняем хранимую процедуру
stored_procedure = 'GetPersons'
# Вызываем хранимую процедуру
cursor.execute("{CALL " + stored_procedure + "}")
# получаем и печатаем результаты
rows = cursor.fetchall()
for row in rows:
print(row)
except pyodbc.Error as ex:
print("An error occurred in SQL Server:", ex)
finally:
# Закрываем подключение
if 'connection' in locals():
connection.close()
Большая часть кода повторяет первый пример.
Вот отличающиеся строки:
stored_procedure = 'GetPersons'
# Вызываем хранимую процедуру
cursor.execute("{CALL " + stored_procedure + "}")
Вызывается хранимая процедура GetPersons.
Вставка данных в SQL Server, используя хранимую процедуру, в Puthon
В следующем примере мы создадим хранимую процедуру, которая вставляет данные в базу данных SQL Server.
Сначала создадим хранимую процедуру с параметрами для вставки данных в таблицу sales.currency:
CREATE PROCEDURE [dbo].[InsertCurrency]
@CurrencyCode nchar(3),
@Name dbo.Name
AS
INSERT INTO [Sales].[Currency] ([CurrencyCode], [Name], [ModifiedDate])
VALUES (@CurrencyCode, @Name, GETDATE());
Затем создадим код Python для вызова хранимой процедуры:
import pyodbc
# Информация подключения
sqlServerName = '.' # Ваш экземпляр SQL Server
databaseName = 'AdventureWorks2019'
trusted_connection = 'yes' # Используем аутентификацию Windows
# информация строки подключения
connection_string = (
f"DRIVER={{SQL Server}};"
f"SERVER={sqlServerName};"
f"DATABASE={databaseName};"
f"Trusted_Connection={trusted_connection}"
)
try:
# Создать подключения
connection = pyodbc.connect(connection_string)
cursor = connection.cursor()
# Параметры, используемые хранимой процедурой
currency_code = 'MEU'
name = 'Sql Server Central Euros'
# Вызов хранимой процедуры
stored_procedure = 'InsertCurrency'
cursor.execute("{CALL " + stored_procedure + " (?, ?)}", (currency_code, name))
# Зафиксировать транзакцию
connection.commit()
print("Stored procedure executed successfully!")
except pyodbc.Error as ex:
print("An error occurred in SQL Server:", ex)
connection.rollback()
finally:
# Закрыть соединение
if 'connection' in locals():
connection.close()
Если все ОК, код Python вставит данные в таблицу sales.currency.
Вот наиболее важные строки:
# Параметры, используемые хранимой процедурой
currency_code = 'MEU'
name = 'Sql Server Central Euros'
# Вызов хранимой процедуры
stored_procedure = 'InsertCurrency'
cursor.execute("{CALL " + stored_procedure + " (?, ?)}", (currency_code, name))
По сути, мы вставим код и название валюты. Затем мы вызываем хранимую процедуру и передаем значения двух параметров.
Если все ОК, мы увидим новые вставленные данные:
Вставка данных из файла CSV в SQL Server
Наконец, пусть у нас имеется csv-файл с именем currencies.csv, который содержит следующие данные:
code>WIZ, Wizarding Galleon
STK, Starkmark
FOR, Jedi Credit
AVC, Avenger Coin
NRN, Narnian Silver Star
PTW, Galleon of Wizardry
MTR, Neo Coin
WAK, Wakandan Vibranium Token
Мы хотим вставить данные из csv-файла в таблицу sales.currency. Следующий код Python выполняет это:
import pyodbc
import csv
# Информация подключения
sqlServerName = '.' # Ваш экземпляр SQL Server
databaseName = 'AdventureWorks2019'
trusted_connection = 'yes' # Используем аутентификацию Windows
# информация строки подключения
connection_string = (
f"DRIVER={{SQL Server}};"
f"SERVER={sqlServerName};"
f"DATABASE={databaseName};"
f"Trusted_Connection={trusted_connection}"
)
try:
# Создать подключения
connection = pyodbc.connect(connection_string)
cursor = connection.cursor()
# Читаем валюту из файла CSV и вставляем в базу данных
with open('c:\data\currencies.csv', 'r') as csv_file:
csv_reader = csv.reader(csv_file)
next(csv_reader) # Пропускаем строку заголовка, если она существует
for row in csv_reader:
currency_code = row[0]
name = row[1]
stored_procedure = 'InsertCurrency'
cursor.execute("{CALL " + stored_procedure + " (?, ?)}", (currency_code, name))
# Зафиксировать транзакцию
connection.commit()
print(f"Inserted: {currency_code}, {name}")
print("All currencies inserted successfully!")
except pyodbc.Error as ex:
print("An error occurred in SQL Server:", ex)
connection.rollback()
finally:
# Закрыть соединение
if 'connection' in locals():
connection.close()
Сначала мы читаем данные из csv-файла.
# Читаем валюту из файла CSV и вставляем в базу данных
with open('c:\data\currencies.csv', 'r') as csv_file:
csv_reader = csv.reader(csv_file)
next(csv_reader) # Пропускаем строку заголовка, если она существует
Затем читаем значения в строках.
for row in csv_reader:
currency_code = row[0]
name = row[1]
Наконец, выполняем хранимую процедуру и вставляем значения.
stored_procedure = 'InsertCurrency'
cursor.execute("{CALL " + stored_procedure + " (?, ?)}", (currency_code, name))
Ссылки по теме
1. Как, используя Python, подключиться к SQL Server и выполнить запрос
2. Обработка исключений в Python, используя Try, Except, Else и Finally
3. Импорт данных из файла Excel в базу данных SQL Server с помощью Python
4. Хранимые процедуры SQL: входные и выходные параметры, типы, обработка ошибок и кое-что еще
Как разработчик Python, в какой-то момент вам может понадобиться интеграция с базой данных SQL. SQL Server — популярная система управления реляционными базами данных, используемая многими компаниями, поэтому интеграция Python с SQL Server — полезный навык. Миллионы компаний по всему миру используют SQL Server, одну из самых популярных реляционных баз данных. Его мощные функции и масштабируемость делают его широко используемым, и неудивительно, почему. Однако интеграция его с Python может быть немного сложной. Вот как вы можете это сделать.
Что такое Python и SQL Server?
Вы можете интегрировать SQL Server с Python без необходимости использования какого-либо дополнительного программного обеспечения для интеграции данных. Это руководство предоставит вам обзор основ, чтобы вы могли быстро и легко приступить к работе.
Разработчики используют Python — мощный и универсальный язык программирования — для различных приложений, таких как веб-разработка, разработка игр, машинное обучение и т. д. Интеграция данных. С другой стороны, SQL Server является популярным система управления реляционными базами данных (СУБД) это позволяет пользователям хранить и получать доступ к данным из нескольких систем.
В сочетании Python и SQL Server предоставляют пользователям эффективный способ доступа к данным, хранящимся в базах данных SQL Server, из скриптов Python. Таким образом, это открывает широкий спектр возможностей для анализа, составления отчетов или выполнения других задач с данными. Кроме того, код Python позволяет пользователям манипулировать данными хранятся в базах данных SQL Server, что еще больше расширяет возможности.
Процесс интеграции Python с SQL Server относительно прост, что позволяет разработчикам быстро начать использовать обе технологии в своих проектах. Хотя все задачи по интеграции можно выполнять вручную, существуют различные другие варианты программного обеспечения для интеграции данных доступны, которые могут значительно упростить процесс.
Зачем интегрировать Python и SQL Server?
Интеграция Python и SQL Server дает множество преимуществ для анализа данных и разработки приложений.
- Доступ к надежному хранилищу данных. SQL Server — это система управления реляционными базами данных, которая хранит и упорядочивает данные в таблицах. Python может подключаться к SQL Server для запроса и управления этими данными.
- Используйте возможности Python для анализа данных. Python имеет множество библиотек для анализа данных, машинного обучения и визуализации. Подключив Python к SQL Server, вы сможете анализировать данные, хранящиеся в базе данных.
- Создавайте веб-приложения, управляемые данными. Python — популярная среда для создания веб-приложений. Используя Python для подключения к SQL Server, вы можете создавать управляемые данными веб-приложения, которые читают и записывают данные в базу данных.
- Используйте знакомые языки. Если вы знакомы с Python и SQL, их интеграция позволит вам использовать сильные стороны каждого языка. Вы можете писать SQL-запросы для управления данными в базе данных и использовать Python для построения логики приложения.
- Надежная экосистема инструментов. Python и SQL Server имеют множество библиотек с открытым исходным кодом и инструменты помочь в развитии. Интеграция этих технологий позволяет использовать инструменты обеих экосистем.
Подводя итог, можно сказать, что интеграция мощи Python и возможностей хранения данных SQL Server обеспечивает платформу для создания приложений, управляемых данными, и эффективных способов анализа данных. Благодаря разнообразию инструментов и библиотек в обеих экосистемах Python и SQL Server идеально подходят для продуктивной разработки.
Шаги по подключению к SQL Server с помощью Python
Интеграцию SQL Server с Python можно выполнить несколькими способами, наиболее распространенным из которых является использование библиотеки Python. Pyodbc. Эта библиотека обеспечивает уровень абстракции между вашим кодом и драйвером ODBC, позволяя вам писать код, который легче поддерживать и понимать.
Следующие шаги можно использовать для успешной интеграции SQL Server с Python:
1. Установите драйвер ODBC для SQL Server.
Драйвер ODBC для SQL Server можно загрузить в Центре загрузки Microsoft. Нужная версия драйвера может зависеть от версии SQL Server и операционной системы. Вот несколько ссылок для скачивания драйвера:
- Драйвер ODBC для SQL Server в Windows: https://www.microsoft.com/en-us/download/details.aspx?id=56567
- Драйвер ODBC для SQL Server в Linux: https://docs.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver15
2. Импортируйте pyodbc в свой проект.
Чтобы использовать pyodbc, вам необходимо сначала установить его. Вы можете использовать pip, менеджер пакетов Python, для установки pyodbc. Вот команда для установки pyodbc:
pip install pyodbc
3. Создайте объект соединения ODBC с помощью pyodbc.
Вам потребуется предоставить данные подключения к базе данных SQL Server, чтобы создать объект подключения ODBC. Вот пример фрагмента кода, показывающий, как создать объект подключения ODBC с помощью pyodbc:
import pyodbc conn = pyodbc.connect('DRIVER={SQL Server};SERVER=;DATABASE=;UID=;PWD=')
Замените , , и с фактическими значениями для вашей базы данных.
4. Используйте метод .connect() для объекта, чтобы инициировать соединение с SQL Server.
Если у вас есть объект подключения ODBC, вы можете использовать метод .connect() для инициации соединения с SQL Server. Вот как вы можете его использовать:
import pyodbc conn = pyodbc.connect('DRIVER={SQL Server};SERVER=;DATABASE=;UID=;PWD=')
conn.connect()
5. Выполните такие операции, как вставка, обновление и удаление данных из вашего приложения Python.
После установки соединения вы можете использовать операторы SQL для выполнения различных операций с базой данных SQL Server из приложения Python. Вот пример фрагмента кода, показывающий, как выполнить SQL-запрос с помощью pyodbc:
cursor = conn.cursor() cursor.execute("SELECT * FROM ") rows = cursor.fetchall()
Замените с фактическим именем таблицы, из которой вы хотите получить данные.
6. Закройте соединение, используя метод .rollback() или .commit() в зависимости от того, хотите ли вы сохранить или отменить изменения вашей транзакции.
После завершения операций с базой данных вам необходимо закрыть соединение, чтобы избежать утечки ресурсов. Вы можете использовать метод .rollback() для отмены любых незафиксированных изменений или метод .commit() для сохранения любых изменений, внесенных в базу данных.
Расширенные SQL-запросы в Python и SQL Server
SQL Server и Python предлагают множество мощных возможностей для написания сложных SQL-запросов. Благодаря правильному сочетанию опыта разработки и правильных инструментов вы сможете быстро и эффективно получить доступ к аналитической информации посредством интеграции SQL Server и Python.
Вы можете использовать Python для выполнения сложных запросов к базам данных SQL Server. Это включает в себя использование подзапросов, параметризованные запросы, группировка результатов и многое другое. Использование Python обеспечивает большую гибкость при создании сложных запросов, чем просто использование одного кода T-SQL.
Для тех, кто ищет простое и эффективное решение, Astera — популярный инструмент, предлагающий полный набор функций интеграции данных. Он предоставляет интуитивно понятный интерфейс перетаскивания, который позволяет легко подключаться к SQL Server или любому другому источнику данных, преобразовывать данные и автоматизировать рабочие процессы интеграции данных, не требуя каких-либо знаний в области кодирования. При выборе инструмента для интеграции данных без кода учитывайте такие факторы, как простота использования, стоимость, масштабируемость, а также доступная поддержка и документация.
Помните, что интеграция SQL Server и Python может оказаться сложным процессом, особенно при работе с большими и сложными наборами данных. Будьте готовы потратить время и ресурсы на изучение и экспериментирование с различными инструментами и подходами, пока не найдете лучшее решение для своих нужд.
Заключение
В заключение, интеграция SQL Server с Python — это мощный способ повысить эффективность управления данными. Используя объектно-ориентированные функции Python, а также моделирование данных и язык запросов SQL Server, вы можете создавать надежные приложения с повышенной гибкостью и масштабируемостью. Кроме того, если вы ищете простую альтернативу ручной интеграции SQL Server с Python, платформа интеграции данных, такая как Astera, может упростить процесс и сэкономить вам время и ресурсы. Поэтому, независимо от того, решите ли вы интегрировать SQL Server с Python вручную или использовать платформу, оптимизация операций по интеграции данных может помочь вам быстрее извлекать ценную информацию из ваших данных.
. Astera для упрощения интеграции с SQL Server
Интеграция данных из SQL Server в ваш конвейер данных не должна быть сложной задачей. Astera предлагает простой способ мониторинга и запроса данных из SQL Server, что значительно упрощает процесс интеграции.
Astera позволяет пользователям:
- Создавайте и реализуйте конвейеры интеграции данных за считанные минуты, что обеспечивает бесперебойную передачу данных между системами и приложениями
- Легко создавайте новые записи данных, используя удобный интерфейс, без необходимости каких-либо знаний или опыта в кодировании
- Доступ к данным из более чем 100 источников с минимальными ручными усилиями
- Автоматизируйте поток данных между исходной и целевой системами, оптимизируя процесс интеграции
- Объединить несколько исходных таблиц в единую интегрированную таблицу или плоский файл, что упрощает анализ данных и составление отчетов
Платформа предоставляет комплексный графический интерфейс, с помощью которого вы можете перетаскивать, отображать и преобразовывать исходные записи в целевые выходные данные. Это также позволяет вам настроить потоки синхронизации базы данных, которые будут постоянно синхронизировать вашу базу данных с удаленными источниками базы данных. Таким образом, с помощью Astera, вы можете быстро и легко отслеживать и синхронизировать базы данных с нескольких платформ.
Авторы:
- Astera Аналитическая команда
Introduction
This blog Python Connect to SQL Database will guide to connect Microsoft SQL Server database in Python using pyodbc package. Here we will connect the local SQL server with windows authentication and remote SQL server with user credentials. We will also discuss the connection string example to connect Azure Active Directory.
Getting Started
Python library provides pyodbc package to connect Microsoft SQL Server database. The pyodbc database is open source and is available in python portal.If your machine does not have pyodbc, efer my previous blog How to install pyodbc window to install pyodbc package.
The pyodbc introduced a connection method to connect to the Microsoft SQL Server database and it accepts string variable as a parameter. The string variable should contain like below value.
|
Python Connect to SQL Database |
SQL Windows Authentication
'DRIVER={SQL Server};SERVER=Database Server Name;DATABASE=Database Name;Trusted_Connection=yes;'
SQL Server Authentication
'DRIVER={SQL Server};SERVER=Database Server Name;DATABASE=Database Name;UID=sa;PWD=XXXXXX'
Above both are the connection strings to establish connection to Microsoft SQL Server. In below we will see the example of connection strings.
Pyodbc ConnectionString Examples
SQL Windows Authentication
'Driver={SQL Server};Server=DESKTOP-SQQV4ED;Database=Pythondb;Trusted_Connection=yes;'
SQL Server Authentication
'DRIVER={SQL Server};SERVER=DESKTOP-65KMK07\SQLEXPRESS;PORT=1433;DATABASE=Test;UID=sa;PWD=******;'
pyodbc uses the Microsoft ODBC driver for SQL Server. If your version of the ODBC driver is 17.1 or later, you can use the Azure Active Directory interactive mode of the ODBC driver through pyODBC. This interactive option works if Python and pyODBC permit the ODBC driver to display the dialog. The option is only available on Windows operating systems.
The following example provides an ODBC connection string that specifies Azure Active Directory interactive authentication:
server=Server;database=Database;UID=UserName;Authentication=ActiveDirectoryInteractive;
The Microsoft ODBC Driver for SQL Server with version 13.1 or above allows ODBC applications to connect to an instance of Azure SQL Database using a federated identity in Azure Active Directory with a username/password, an Azure Active Directory access token, an Azure Active Directory managed service identity, or Windows Integrated Authentication (Windows driver only).
For the ODBC Driver version 13.1, the Azure Active Directory access token authentication is Windows only. The ODBC Driver version 17 and above support this authentication across all platforms (Windows, Linux, and macOS).
Python Connect to SQL Database
A new Azure Active Directory interactive authentication with Login ID is introduced in ODBC Driver version 17.1 for Windows. A new Azure Active Directory managed service identity authentication method was added in ODBC Driver version 17.3.1.1 for both system-assigned and user-assigned identities.
All of these are accomplished through the use of new DSN and connection string keywords, and connection attributes.
Note that the ODBC Driver on Linux and macOS only supports Azure Active Directory authentication directly against Azure Active Directory. If you are using Azure Active Directory username/password authentication from a Linux or macOS client and your Active Directory configuration requires the client to authenticate against an Active Directory Federation Services endpoint, authentication may fail.
Python Connect to SQL Database
Steps to Connect SQL Server and Fetch data
- Import pyodbc package.
- Create object of connection method with SQL server configuration details as parameter.
- Create object of cursor with help of connection object.
- Execute cursor by passing SQL Query as parameter.
- Read each row from cursor.
Syntax of Python Connect to SQL Database
import pyodbc
# Some other example server values are
# server = 'localhost\sqlexpress' # for a named instance
# server = 'myserver,port' # to specify an alternate port
server = 'tcp:myserver.database.windows.net'
database = 'mydb'
username = 'myusername'
password = 'mypassword'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
Select Query for Python Database
The cursor.execute function can be used to retrieve a result set from a query against SQL Database. This function accepts a query and returns a result set, which can be iterated over with the use of cursor.fetchone()
import pyodbc
conn = pyodbc.connect('Driver={SQL Server};'
'Server=DESKTOP-SQQV4ED;'
'Database=Pythondb;'
'Trusted_Connection=yes;')
cursor = conn.cursor()
cursor.execute('SELECT * FROM dbo.Student')
for row in cursor:
print(row)
|
Python Connect to SQL Database |
Insert Query for Python Connect to SQL Database
cursor.execute("""
INSERT INTO SalesLT.Product (Name, ProductNumber, StandardCost, ListPrice, SellStartDate)
VALUES (?,?,?,?,?)""",
'SQL Server Express New 20', 'SQLEXPRESS New 20', 0, 0, CURRENT_TIMESTAMP)
cnxn.commit()
row = cursor.fetchone()
while row:
print('Inserted Product key is ' + str(row[0]))
row = cursor.fetchone()
In above example, you saw how to run an INSERT statement safely, and pass parameters. The parameters protect your application from SQL injection.
Summary
You have seen Python Connect to SQL Database. Once you established such a connection between Python and SQL Server, you can start using SQL in Python to manage your data. I hope you have enjoyed it a lot.
Thanks