Я пытаюсь подключить скрипт python 2.7 к хранилищу данных SQL Azure.
Часть кода завершена, и тестовые примеры работают в нашей среде разработки. Мы кодируем Python 2.7 в MacOS X и подключаемся к ADW через ctds. Проблема возникает при развертывании в нашем модуле Azure Kubernetes (под управлением Debian 9). Когда мы пытаемся создать соединение таким образом:
# init a connection
self._connection = ctds.connect(
server='myserver.database.windows.net',
port=1433,
user="[email protected]",
timeout=1200,
password="XXXXXXXX",
database="my_db",
autocommit=True
)
мы получаем исключение, которое выводит только имя пользователя
[email protected]
тип исключения
_tds.InterfaceError
Развернутый код такой же, как и требования.
Документация, которую мы нашли для этого исключения, практически не существует.
Вы, ребята, узнаете это? Вы знаете, как мы можем это обойти?
Мы также пробовали в наших старых экземплярах AWS EC2 и AWS Kubernetes (которые используют ту же ОС, что и Azure), и это тоже не работает.
Нам удалось подключиться к ADW через sqlcmd, так что это доказывает, что модуль может действительно подключиться (я полагаю).
РЕДАКТИРОВАТЬ: РЕШЕНО. ПРОСТО ИЗМЕНИЛ НА PYODBC
def connection(self):
""":rtype: pyodbc.Connection"""
if self._connection is None:
env = '' # whichever way you have to identify it
# init a connection
driver = '/usr/local/lib/libmsodbcsql.17.dylib' if env == 'dev' else '{ODBC Driver 17 for SQL Server}' # my dev env is MacOS and my prod is Debian 9
connection_string = 'Driver={driver};Server=tcp:{server},{port};Database={db};Uid={user};Pwd={password};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;'.format(
driver=driver,
server='myserver.database.windows.net',
port=1433,
db='mydb',
user='myuser@myserver',
password='XXXXXXXXXXXX'
)
self._connection = pyodbc.connect(connection_string, autocommit=True)
return self._connection