- Python: десять лучших пакетов драйверов для баз данных
- Пакеты драйверов для баз данных на языке Python
- redis-py — клиент базы данных Redis на Python
- PyMySQL — драйвер Pure Python MySQL, совместимый с mysql-python
- asyncpg — быстрая клиентская библиотека Python / asyncio для базы данных PostgreSQL
- psycopg2 — самый популярный адаптер PostgreSQL для Python
- mysqlclient — поддерживающий Python 3 форк библиотеки mysql-python
- cassandra-python-driver — драйвер Python для Cassandra
- motor — аснхронный драйвер Python для MongoDB
- pymssql — простой интерфейс для Microsoft SQL Server
- HappyBase — удобная библиотека для Apache HBase
- PyMongo — официальный клиент Python для MongoDB
- SuperSQLite — улучшенная библиотека SQLite
- Шаг 3. Подтверждение концепции, подразумевающее подключение к SQL с помощью pyodbc
- Подключение
- Выполнение запроса
- Вставка строки
- Azure Active Directory и строка подключения
- Пример строки подключения для использования с интерактивной проверкой подлинности Azure Active Directory
- Дальнейшие действия
- Шаг 3. Подтверждение концепции, подразумевающее подключение к SQL с помощью pymssql
- Шаг 1. Подключение
- Шаг 2. Выполнение запроса
- Шаг 3. Вставка строки
- Шаг 4. Откат транзакции
- Дальнейшие действия
Python: десять лучших пакетов драйверов для баз данных
Хорошо известно, что Python это модульный язык, в котором импортируется множество полезных операций из его стандартной библиотеки. Очевидно, что без этого программировать на Python совершенно невозможно. Во многом популярность этого языка основана на открытом коде и том, что вся разработка ведется под лицензией OSI (Open Software License). Вы можете совершенно бесплатно скачать и установить на любом компьютере все инструменты Python. Это все доступно в различных сборках, при этом поддерживается 21 операционная система, что делает язык Python поистине универсальным.
Пакеты драйверов для баз данных на языке Python
Ниже приведен список Python-библиотек драйверов для различных баз данных, полезный любому программисту, который интересуется этим языком.
redis-py — клиент базы данных Redis на Python
redis-py 3.5.x — это последняя версия, которая поддерживала Python 2. Обновления безопасности, совместимые с Python 2, выходили вплоть до 20 августа 2020 года. Для redis-py 4.0, следующей основной версии, уже требуется Python не ниже версии 3.5.
PyMySQL — драйвер Pure Python MySQL, совместимый с mysql-python
Этот пакет содержит клиентскую библиотеку Python MySQL, основанную на стандарте PEP 249.
Большинство открытых API-интерфейсов совместимы с mysqlclient и MySQLdb.
ЗАМЕЧАНИЕ: PyMySQL не поддерживает низкоуровневые API-запросы, которые есть в _mysql, а именно data_seek, store_result и use_result . Вы должны использовать высокоуровневые API-запросы, определенные в стандарте PEP 249. Но некоторые API-запросы, такие как autocommit и ping , все же поддерживаются, поскольку PEP 249 никак не регламентирует их применение.
asyncpg — быстрая клиентская библиотека Python / asyncio для базы данных PostgreSQL
Это библиотека интерфейса базы данных, разработанная специально для PostgreSQL и Python / asyncio.
asyncpg — это эффективная и чистая реализация бинарного протокола сервера баз данных PostgreSQL для использования с асинхронным фреймворком Python asyncio. Вы можете узнать больше об asyncpg вот здесь.
asyncpg требует Python версии 3.5 или новее и поддерживается для PostgreSQL начиная с версии 9.2 и заканчивая версией 12.
psycopg2 — самый популярный адаптер PostgreSQL для Python
Psycopg — самый популярный адаптер базы данных PostgreSQL для языка программирования Python. Его основными особенностями являются полная реализация спецификации Python DB API 2.0 и безопасность потоков (несколько потоков могут использовать одно и то же соединение). Он был разработан для многопоточных приложений, которые создают и уничтожают множество связей и выполняют большое количество одновременных операций INSERT или UPDATE.
mysqlclient — поддерживающий Python 3 форк библиотеки mysql-python
В этом проекте добавлена поддержка Python 3 и исправлен ряд ошибок. Мы надеемся, что этот форк будет снова объединен со своей родительской библиотекой. Это было бы так же логично, как объединение дистрибутива и программы для его установки.
cassandra-python-driver — драйвер Python для Cassandra
Современная, многофункциональная и гибконастраиваемая клиентская библиотека Python для Apache Cassandra (1.2+) и DataStax Enterprise (3.1+). Она использует исключительно бинарный протокол Cassandra и язык запросов Cassandra Query Language v3.
motor — аснхронный драйвер Python для MongoDB
Motor — это полнофункциональный драйвер MongoDB для Python Tornado и других асинхронных приложений.
pymssql — простой интерфейс для Microsoft SQL Server
Простой интерфейс баз данных на языке Python, который строится поверх FreeTDS и предоставляет интерфейс Python DB-API (PEP-249) для Microsoft SQL Server.
HappyBase — удобная библиотека для Apache HBase
PyMongo — официальный клиент Python для MongoDB
SuperSQLite — улучшенная библиотека SQLite
Это многофункциональная библиотека Python, предназначенная для использования SQLite в Python компанией Plasticity. Построена она на основе apsw.
Данная библиотека предназначена для замены встроенного в Python API SQLite, но без каких-либо ограничений. Она предлагает уникальные функции, такие как удаленная потоковая передача по HTTP и объединение расширений, таких как JSON, R-Trees (геопространственное индексирование), а также полнотекстовый поиск.
SuperSQLite также содержит предварительно скомпилированные собственные бинарные файлы для SQLite и всех его расширений (практически для любой платформы). Это сделано чтобы избежать возможных ошибок компилятора C / C ++ во время установки.
Шаг 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.
Шаг 3. Подтверждение концепции, подразумевающее подключение к SQL с помощью pymssql
Этот пример следует рассматривать только как подтверждение концепции. Пример кода упрощен для ясности и он не обязательно рекомендуется к использованию корпорацией Майкрософт.
Шаг 1. Подключение
Функция pymssql.connect используется для подключения к базе данных SQL.
import pymssql conn = pymssql.connect(server='yourserver.database.windows.net', user='yourusername@yourserver', password='yourpassword', database='AdventureWorks')
Шаг 2. Выполнение запроса
Функция cursor.execute может использоваться для извлечения результирующего набора из запроса к базе данных SQL. Эта функция фактически принимает любой запрос и возвращает результирующий набор, по которому может быть выполнена итерация с использованием cursor.fetchone().
import pymssql conn = pymssql.connect(server='yourserver.database.windows.net', user='yourusername@yourserver', password='yourpassword', database='AdventureWorks') cursor = conn.cursor() cursor.execute('SELECT c.CustomerID, c.CompanyName,COUNT(soh.SalesOrderID) AS OrderCount FROM SalesLT.Customer AS c LEFT OUTER JOIN SalesLT.SalesOrderHeader AS soh ON c.CustomerID = soh.CustomerID GROUP BY c.CustomerID, c.CompanyName ORDER BY OrderCount DESC;') row = cursor.fetchone() while row: print(str(row[0]) + " " + str(row[1]) + " " + str(row[2])) row = cursor.fetchone()
Шаг 3. Вставка строки
В этом примере вы узнаете, как безопасно выполнить инструкцию INSERT и передать параметры. Передача параметров в виде значений защищает приложение от внедрения SQL-кода.
import pymssql conn = pymssql.connect(server='yourserver.database.windows.net', user='yourusername@yourserver', password='yourpassword', database='AdventureWorks') cursor = conn.cursor() cursor.execute("INSERT SalesLT.Product (Name, ProductNumber, StandardCost, ListPrice, SellStartDate) OUTPUT INSERTED.ProductID VALUES ('SQL Server Express', 'SQLEXPRESS', 0, 0, CURRENT_TIMESTAMP)") row = cursor.fetchone() while row: print("Inserted Product ID : " +str(row[0])) row = cursor.fetchone() conn.commit() conn.close()
Шаг 4. Откат транзакции
Этот пример кода демонстрирует использование транзакций, в которых можно:
- начать транзакцию;
- вставить строку данных;
- откатить транзакцию для отмены вставки.
import pymssql conn = pymssql.connect(server='yourserver.database.windows.net', user='yourusername@yourserver', password='yourpassword', database='AdventureWorks') cursor = conn.cursor() cursor.execute("BEGIN TRANSACTION") cursor.execute("INSERT SalesLT.Product (Name, ProductNumber, StandardCost, ListPrice, SellStartDate) OUTPUT INSERTED.ProductID VALUES ('SQL Server Express New', 'SQLEXPRESS New', 0, 0, CURRENT_TIMESTAMP)") conn.rollback() conn.close()
Дальнейшие действия
Дополнительную информацию можно найти в Центре разработчика Python.