【问题标题】:Troubleshooting pymssql connection to Azure mssql on linux cloud at pythonanywhere在 pythonanywhere 的 linux 云上对 pymssql 连接到 Azure mssql 进行故障排除
【发布时间】: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


【解决方案1】:

在免费帐户上的 Python Anywhere 中,它不允许访问所有网址。仅限特定列表中的地址。

“如果您有付费的 Python Anywhere 计划”

https://help.pythonanywhere.com/pages/MSSQLServer/

【讨论】:

  • OP 有一个付费帐户,如 cmets 中所述。
猜你喜欢
  • 2012-09-28
  • 2011-08-03
  • 2014-08-13
  • 2021-08-16
  • 2018-09-16
  • 1970-01-01
  • 1970-01-01
  • 2019-08-12
  • 1970-01-01
相关资源
最近更新 更多