【发布时间】:2017-02-01 01:19:57
【问题描述】:
我无法通过 pythonanywhere 上的 pymssql 连接到 Azure 托管的 MSSQL 服务器。
我以前的 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 版本有关,我通过在 bash 上运行 tsql -C 得到 4.2。这是输出:
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
我尝试在home/myuser/ 和home/myuser/my_virtual_env/ 都放置一个.freetds.conf 文件,但这并没有改变任何行为。我应该重新启动 bash 控制台还是 python 控制台?我不这么认为。以下是文件内容:
[global]
tds version = 7.1
[azure]
tds version = 7.4
另一种选择是使用 pyodbc,但这也需要配置 freetds,然后再配置一些,所以看起来那里什么都没有。
我应该指出,我有 pymssql 在我的 win10 机器上使用以下连接字符串很好地连接到 azure:
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)
【问题讨论】:
-
快速检查-您是免费用户吗? PythonAnywhere 不允许免费用户进行任意外部互联网连接。他们有一个免费用户的白名单。
-
@conrad,不。不过,我签了最低层,以感受服务。我尝试了现场提供的所有说明。
-
升级后是否重启了主机?
-
@hwjp 你的意思是升级到付费账户类型?我从一开始就以付费方式创建了我的帐户。另外,我没有重新启动任何控制台,但我确实关闭并打开了许多新的控制台,没有任何变化。
-
您能否判断您在自己的 PC 上运行的 pymssql 版本是否与在 PythonAnywhere 上运行的版本相同?你在使用 virtualenv 吗?
标签: python azure-sql-database pythonanywhere pymssql