在pythonanywhere

时间:2017-02-01 01:19:58

标签: python azure-sql-database pythonanywhere pymssql

我无法通过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上运行4.2来获得tsql -C。这是输出:

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.confhome/myuser/放置home/myuser/my_virtual_env/文件,但这并没有改变任何行为。我应该重新启动bash控制台还是python控制台?我不这么认为。以下是文件内容:

[global]
        tds version = 7.1


[azure]
        tds version = 7.4

另一个替代方案是使用pyodbc,但这也需要配置freetds然后再配置一些,所以看起来没有任何东西可供使用。

我应该指出,我在win10机器上使用以下连接字符串pymssql正好连接到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)

1 个答案:

答案 0 :(得分:-1)

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

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

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