Мне не удалось подключиться к серверу MSSQL, размещенному в Azure, через pymssql
на pythonanywhere. У меня нет предыдущего опыта работы с Linux, так что это усложняет задачу.
Я пробую этот образец скрипта с инструкциями:
host = "123.456.789.012"
username = "yourusername"
password = "yourpassword"
database = "yourdatabasename"
conn = pymssql.connect(host, username, password, database)
cursor = conn.cursor()
Но я получаю эту ошибку:
Traceback (most recent call last):
File "pymssql.pyx", line 635, in pymssql.connect (pymssql.c:10734)
File "_mssql.pyx", line 1902, in _mssql.connect (_mssql.c:21821)
File "_mssql.pyx", line 637, in _mssql.MSSQLConnection.__init__ (_mssql.c:6581)
File "_mssql.pyx", line 1630, in _mssql.maybe_raise_MSSQLDatabaseException (_mssql.c:17524)
_mssql.MSSQLDatabaseException: (20002, b'DB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (my_server_name.database.windows.net:1433)\n')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pymssql.pyx", line 641, in pymssql.connect (pymssql.c:10824)
pymssql.OperationalError: (20002, b'DB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (my_server_name.database.windows.net:1433)\n')
Я решил, что это связано с используемой мной версией TDS, которую я получаю 4.2
, запустив tsql -C
на bash. Вот результат:
Compile-time settings (established with the "configure" script)
Version: freetds v0.91
freetds.conf directory: /etc/freetds
MS db-lib source compatibility: no
Sybase binary compatibility: yes
Thread safety: yes
iconv library: yes
TDS version: 4.2
iODBC: no
unixodbc: yes
SSPI "trusted" logins: no
Kerberos: yes
Я попытался разместить файл .freetds.conf
как в home/myuser/
, так и в home/myuser/my_virtual_env/
, но это не изменило поведения. Должен ли я перезапустить консоль bash или консоль python? Я так не думал. Вот содержимое файла:
[global]
tds version = 7.1
[azure]
tds version = 7.4
Другой альтернативой было бы использование pyodbc, но это также включало бы настройку freetds, а затем еще кое-что, так что похоже, что там ничего не будет.
Я должен отметить, что у меня pymssql
прекрасно подключается к Azure на моем компьютере с Win10 со следующей строкой подключения:
arguments = dict(server=db_server_add, user=db_usn+"@my_server",
password=db_pswd, database=db_name, charset="utf8")
AZURE_ENGINE = create_engine('mssql+pymssql:///', connect_args=arguments)
virtualenv
напрямую с каталогомhome/myuser/my_virtual_env/
, тогда как дома я использую окружениеconda
. - person mvbentes   schedule 08.02.2017