Короче говоря, да ODB C драйвер будет только дополнительная загрузка, необходимая для pyodb c.
PyODB C является открытым закончилась Python DB-API, который принимает любой совместимый драйвер ODB C от любого источника данных (Oracle, SQL Сервер, PostgreSQL, SalesForce, Quickbooks, и др c.). Драйверы ODB C служат средним уровнем между клиентом (то есть Python) и сервером базы данных и, как и любое программное обеспечение, они могут разрабатываться проприетарными поставщиками (например, Oracle, Microsoft), разработчиками с открытым исходным кодом. / группы или третьи лица. Кроме того, ODB C является признанной технологией среди многих платформ, таких как Excel и языки.
В отличие от других Python DB-API (pymysql
, cxOracle
, psycopg2
), pyodbc
как вы понимаете, есть одно требование: указанный драйвер ODB C в коде должен быть предварительно установлен на клиентском компьютере (а не просто установлена библиотека Python). Кстати, это очень похоже на драйверы JDB C с Python jaydebeapi
, и Microsoft поддерживает драйверы JDB C для SQL Сервер .
Ваши коллеги получают следующую ошибку:
Подходящий драйвер не найден. Не удается подключиться.
, поскольку указанный драйвер c ODB C не установлен на их компьютерах, но установлен на вашем компьютере. Попросите их проверить, какие версии доступны для них, с помощью команды:
pyodbc.drivers()
В качестве фона Microsoft поддерживает несколько ODB C драйверов (различных версий, которые обратно совместимы) для Windows, Linux и машины MacOS. Поскольку MS Excel не имеет собственного уровня базы данных, он обычно соединяется с ODB C или OLEDB, но с такой библиотекой, как DAO или ADO (аналог библиотеки Python, pydobc
). Возможно, другие ваши коллеги поддерживают другие версии, такие как:
'ODBC Driver 11 for SQL Server'
'ODBC Driver 13 for SQL Server'
'SQL Server'
'SQL Native Client'
'SQL Server Native Client 11.0'
При этом, если вы собираетесь распространять свой код, интегрированный в исполняемый файл, другим пользователям, не кодируйте жестко ODB. C учетные данные, поскольку, как вы демонстрируете, среды ЦП значительно различаются. Вместо этого рассмотрим следующие три решения:
Имя источника данных : создайте Имя источника данных (DSN) , индивидуально настроенное для каждой пользовательской машины, которая может отличаться для разных драйверов, серверов, имени пользователя, паролей и т. д. c.
cnxn = pyodbc.connect(dsn="myDatabase")
Файл конфигурации : использовать файлы конфигурации как yaml
или json
со всеми учетными данными, указанными в защищенной папке, а затем интегрированными в соединение. Многие онлайн-учебники по этому вопросу.
YAML
db:
driver: 'ODBC Driver Name'
server: '111.111.11.111'
database: 'database'
username: 'username'
password: 'password'
Python
import yaml
with open('file.yaml') as f:
db_creds = yaml.load(f)
...
cnxn = pyodbc.connect(driver=db_creds['driver'], host=db_creds['server'],
uid=db_creds['username'], pwd=db_creds['password'],
database=db_creds['database'])
Переменные среды : использование Переменные среды постоянно или временно устанавливаются на компьютере пользователя перед подключением.
import os
...
cnxn = pyodbc.connect(driver = os.environ.get('MSSQL_DRIVER'),
host = os.environ.get('MSSQL_SERVER'),
uid = os.environ.get('MSSQL_USER'),
pwd = os.environ.get('MSSQL_PWD'),
database = os.environ.get('MSSQL_DB'))
Просматривайте в Интернете документацию, учебные пособия, блоги и даже другие сообщения SO о способах устранения неполадок. Выше приведены простые примеры, которые могут нуждаться в корректировке.