Python pyodbc cursor execute

Доступ к базам данных в Python с помощью pyodbc

Язык программирования Python

Open DataBase Connectivity (ODBC) – это стандарт доступа к базам данных, разработанный SQL Access Group (SAG) в 1992 году. Цель ODBC – сделать возможным доступ к любым данным из любого приложения, независимо от того, какая система управления базами данных (СУБД) хранит эти данные.

Для разработки проекта на Python, в котором нужно реализовать использование баз данных SQL, есть несколько модулей, которые могут быть полезны. pyodbc – один из них.

pyodbc

pyodbc – это модуль Python с открытым исходным кодом, который упрощает доступ к базам данных ODBC из Python, реализуя использование DB API 2.0 в удобном для Python виде. Pyodbc также считается SQL драйвером для Python.

Читайте также:  Curl для php установка

Установка pyodbc

Для установки pyodbc используйте программу установки пакетов Python, pip. В терминале введите следующую строку:

Это относится к любой системе. Вы можете проверить, что модуль был установлен правильно, запустив терминал Python и импортировав модуль с помощью import.

>> import pyodbc
Code language: JavaScript (javascript)

Если он не выдает никаких ошибок, значит, пакет был установлен правильно.

Использование pyodbc с SQL

pyodbc в основном используется для разработки скриптов на языке Python для запросов, управления и изменения баз данных.

Подключение к SQL-серверу:

import pyodbc ''' Другие возможные имена серверов могут быть следующими server = 'localhost\sqlexpress' # для особых случаев server = 'myserver,port' # для указания альтернативного порта ''' server = 'port:server.base.sql' # Название сервера SQL, к которому будет выполнено подключение. bddata = 'mybd' # Имя базы данных SQL user = 'username' # Имя пользователя SQL password = 'password' # Пароль пользователя SQL conn = pyodbc.connect('DRIVER=; SERVER='+server+'; DATABASE='+bddata+'; UID='+user+'; PWD='+password) ''' pyodbc.connect() запускает соединение с SQL-сервером принимая в качестве аргументов, по порядку,: - Имя драйвера SQL - Сервер, к которому необходимо подключиться - Имя базы данных, которая будет запрашиваться - Имя пользователя, имеющего доступ к базе данных - Пароль пользователя, имеющего доступ к базе данных ''' cursor = conn.cursor() # создается cursor для соединения
Code language: PHP (php)

Cursor

Cursor в базе данных – это объект, который используется для обработки контекста операции запроса.

Методы курсора

execute()

Функция ‘execute(sql,*parameters)’ выполняет выражение SQL, указанное в первом аргументе, с учетом параметров, указанных во втором аргументе. Он всегда возвращает один и тот же курсор. Пример:

import pyodbc server = 'port:server.base.sql' # Название сервера SQL, к которому будет выполнено подключение. bddata = 'mybd' # Имя базы данных SQL user = 'username' # Имя пользователя SQL password = 'password' # Пароль пользователя SQL conn = pyodbc.connect('DRIVER=; SERVER='+server+'; DATABASE='+bddata+'; UID='+user+'; PWD='+password) cursor = conn.cursor() # создается курсор для соединения cursor.execute('select * from tracking_sales') # Курсор генерируется с применением критерия # поиск или запрос for string in cursor.fetchall(): print(row)
Code language: PHP (php)

fetchone()

Возвращает следующую доступную строку в запросе или ‘None’, если данные недоступны. В случае, если SQL не был выполнен.

cursor.execute("select user_name from users where user_id=?", userid) row = cursor.fetchone() if string: print(string.user_name)
Code language: PHP (php)

fetchall()

Возвращает список всех доступных строк в запросе.

cursor.execute("select user_id, user_name from users where user_id < 100") rows = cursor.fetchall() for string in strings: print(string.user_id, string.user_name)
Code language: PHP (php)

commit()

Сохраняет изменения, внесенные в базу данных.

Использование pyodbc с Microsoft Access

Существует два официальных драйвера ODBC для Access. К ним относятся:

  • Драйвер Microsoft Access (*.mdb): Это более старая 32-битная версия драйверов ODBC. Он входит в стандартную поставку Windows. Он работает только с файлами .mdb. Его официально сняли с производства.
  • Microsoft Access Driver (.mdb,.accdb): Это новая версия драйверов ODBC для Access. Он не входит в состав Windows, но обычно включен в установку Microsoft Office. Для компьютеров, не использующих Office, также доступен автономный пакет установки.

Лучший способ проверить, какой драйвер доступен, – это терминал Python:

>>> import pyodbc >>> [x for x in pyodbc.drivers() is x.startswith('Microsoft Access Driver')]
Code language: JavaScript (javascript)

Здесь указывается имя установленного драйвера ODBC для Access.

Подключение к базе данных Access из Python

import pyodbc conn = pyodbc.connect('DRIVER=; DBQ=C:\root\base\bd\data;') cursor = conn.cursor() # создается курсор for string in cursor.fetchall(): print(string) # Выводятся строки базы данных.
Code language: PHP (php)

С помощью pyodbc.connect() запускается соединение с базой данных. В качестве параметров он получает имя драйвера ODBC и путь, где находится база данных .mdb или .accdb.

Как и в случае с базой данных SQL, операции выполняются с помощью курсора и методов курсора (execute, fetchall, fetchone, commit).

Важно отметить, что pyodbc – это как расширение sqlite, интегрированное в python, поскольку они используют почти одинаковый синтаксис, а также имеют поддержку других типов баз данных.

Источник

Шаг 3. Подтверждение концепции, подразумевающее подключение к SQL с помощью pyodbc

Этот пример является подтверждением концепции. Пример кода упрощен для ясности и для него не гарантируется соблюдение рекомендаций корпорации Майкрософт.

Чтобы приступить к работе, выполните следующий пример скрипта. Создайте файл с именем test.py и добавляйте фрагменты кода по ходу работы.

Подключение

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' # ENCRYPT defaults to yes starting in ODBC Driver 18. It's good to always specify ENCRYPT=yes on the client side to avoid MITM attacks. cnxn = pyodbc.connect('DRIVER=;SERVER='+server+';DATABASE='+database+';ENCRYPT=yes;UID='+username+';PWD='+ password) cursor = cnxn.cursor() 

Выполнение запроса

Функция cursor.execute может использоваться для извлечения результирующего набора из запроса к базе данных SQL. Эта функция принимает запрос и возвращает результирующий набор, по которому может быть выполнена итерация с использованием cursor.fetchone().

#Sample select query cursor.execute("SELECT @@version;") row = cursor.fetchone() while row: print(row[0]) row = cursor.fetchone() 

Вставка строки

В этом примере вы узнаете, как безопасно выполнить инструкцию INSERT и передать параметры. Параметры защищают приложение от внедрения кода SQL.

#Sample insert query count = cursor.execute(""" INSERT INTO SalesLT.Product (Name, ProductNumber, StandardCost, ListPrice, SellStartDate) VALUES (. )""", 'SQL Server Express New 20', 'SQLEXPRESS New 20', 0, 0, CURRENT_TIMESTAMP).rowcount cnxn.commit() print('Rows inserted: ' + str(count)) 

Azure Active Directory и строка подключения

pyODBC использует драйвер Microsoft ODBC для SQL Server. Если ваша версия драйвера ODBC — 17.1 или более поздняя, интерактивный режим Azure Active Directory драйвера ODBC можно использовать через pyODBC.

Этот интерактивный параметр работает, если Python и pyODBC разрешают драйверу ODBC отображать диалоговое окно. Этот параметр доступен только в ОС Windows.

Пример строки подключения для использования с интерактивной проверкой подлинности Azure Active Directory

В следующем примере представлена строка подключения ODBC, определяющая интерактивную проверку подлинности Azure Active Directory.

См. сведения о параметрах проверки подлинности драйвера ODBC в руководстве по использованию Azure Active Directory с драйвером ODBC.

Дальнейшие действия

Дополнительную информацию можно найти в Центре разработчика Python.

Источник

Step 3: Proof of concept connecting to SQL using pyodbc

This example is a proof of concept. The sample code is simplified for clarity, and doesn’t necessarily represent best practices recommended by Microsoft.

To get started, run the following sample script. Create a file called test.py, and add each code snippet as you go.

Connect

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' # ENCRYPT defaults to yes starting in ODBC Driver 18. It's good to always specify ENCRYPT=yes on the client side to avoid MITM attacks. cnxn = pyodbc.connect('DRIVER=;SERVER='+server+';DATABASE='+database+';ENCRYPT=yes;UID='+username+';PWD='+ password) cursor = cnxn.cursor() 

Run query

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().

#Sample select query cursor.execute("SELECT @@version;") row = cursor.fetchone() while row: print(row[0]) row = cursor.fetchone() 

Insert a row

In this example, you see how to run an INSERT statement safely, and pass parameters. The parameters protect your application from SQL injection.

#Sample insert query count = cursor.execute(""" INSERT INTO SalesLT.Product (Name, ProductNumber, StandardCost, ListPrice, SellStartDate) VALUES (. )""", 'SQL Server Express New 20', 'SQLEXPRESS New 20', 0, 0, CURRENT_TIMESTAMP).rowcount cnxn.commit() print('Rows inserted: ' + str(count)) 

Azure Active Directory and the connection string

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.

Example connection string for Azure Active Directory interactive authentication

The following example provides an ODBC connection string that specifies Azure Active Directory interactive authentication:

For more information about the authentication options of the ODBC driver, see Using Azure Active Directory with the ODBC Driver.

Next steps

For more information, see the Python Developer Center.

Источник

Step 3: Proof of concept connecting to SQL using pyodbc

This example is a proof of concept. The sample code is simplified for clarity, and doesn’t necessarily represent best practices recommended by Microsoft.

To get started, run the following sample script. Create a file called test.py, and add each code snippet as you go.

Connect

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' # ENCRYPT defaults to yes starting in ODBC Driver 18. It's good to always specify ENCRYPT=yes on the client side to avoid MITM attacks. cnxn = pyodbc.connect('DRIVER=;SERVER='+server+';DATABASE='+database+';ENCRYPT=yes;UID='+username+';PWD='+ password) cursor = cnxn.cursor() 

Run query

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().

#Sample select query cursor.execute("SELECT @@version;") row = cursor.fetchone() while row: print(row[0]) row = cursor.fetchone() 

Insert a row

In this example, you see how to run an INSERT statement safely, and pass parameters. The parameters protect your application from SQL injection.

#Sample insert query count = cursor.execute(""" INSERT INTO SalesLT.Product (Name, ProductNumber, StandardCost, ListPrice, SellStartDate) VALUES (. )""", 'SQL Server Express New 20', 'SQLEXPRESS New 20', 0, 0, CURRENT_TIMESTAMP).rowcount cnxn.commit() print('Rows inserted: ' + str(count)) 

Azure Active Directory and the connection string

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.

Example connection string for Azure Active Directory interactive authentication

The following example provides an ODBC connection string that specifies Azure Active Directory interactive authentication:

For more information about the authentication options of the ODBC driver, see Using Azure Active Directory with the ODBC Driver.

Next steps

For more information, see the Python Developer Center.

Источник

Оцените статью