【问题标题】:Connecting to Microsoft Azure SQL Database using Python on Ubuntu 14.04在 Ubuntu 14.04 上使用 Python 连接到 Microsoft Azure SQL 数据库
【发布时间】:2015-07-08 16:19:18
【问题描述】:

我一直在尝试使用 Python 连接到我的 Ubuntu 14.04 笔记本电脑上的 Azure SQL 数据库。

我从 Microsoft 找到这篇文章:Connect to SQL Database by using Python on Ubuntu Linux,它向我展示了如何使用 Python 2.7.6

连接到我的 SQL 数据库

我在开始之前确认我满足 Python 2.7.6 要求:

ryan@laptop:~$ python -V的输出是Python 2.7.6


我按照说明在终端中输入了以下几行:

sudo apt-get --assume-yes update
sudo apt-get --assume-yes install freetds-dev freetds-bin
sudo apt-get --assume-yes install python-dev python-pip
sudo pip install pymssql

一切都按预期安装。


我创建了一个 python 脚本并输入了我的信息,这是我的代码:

#!/usr/bin/python
import pymssql
conn = pymssql.connect(server='ryans_server.database.windows.net', user='ryans_user@ryans_server', password='ryans_password', database='ryans_database')

但是,当我执行这段代码时,输​​出如下:

Traceback (most recent call last):
  File "./tp-database.py", line 3, in <module>
    conn = pymssql.connect(server='ryans_server.database.windows.net', user='ryans_user@ryans_server', password='ryans_password', database='ryans_database')
  File "pymssql.pyx", line 637, in pymssql.connect (pymssql.c:9508)
pymssql.OperationalError: (18456, "Login failed for user 'ryans_user'.DB-Lib error message 18456, severity 14:\nGeneral SQL Server error: Check messages from the SQL Server\nDB-Lib error message 20002, severity 9:\nAdaptive Server connection failed\n")

我试过了:export TDSVER=7.0,这会导致不同的错误:

pymssql.OperationalError: (20017, 'DB-Lib error message 20017, severity 9:\nUnexpected EOF from the server\nDB-Lib error message 20002, severity 9:\nAdaptive Server connection failed\n')

如何连接到我的 Azure SQL 数据库?

【问题讨论】:

标签: python sql-server ubuntu azure pymssql


【解决方案1】:

我能够使用我的 Ubuntu 机器上的 pymssql 连接到 ms sql 服务器。

这是我用的:

#!/usr/bin/python
"Proof connection at pyqllevel."
# Test pyodbc connection. Result is 42.
# Note parameters in connection string, <PARAMETER>.

import pymssql
conn = pymssql.connect(server='serverName.database.windows.net',user='username@serverName',password='xxxxxxxxx',database='ustxazsql1')
cursor = conn.cursor()

另外,对于其他使用Windows VS + Python pymssql(通过VS安装)连接SQL Azure的用户,可能会遇到PyanNHG指出的类似错误:

若要在 Windows 上解决此问题,请从 http://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql 重新安装 pymssql 库:

  1. 下载与您的 Python 版本一致的 pymssql .whl 文件
  2. 通过 pip 从那个 .whl 安装 pymssql,

    python -m pip D:\whlFile.whl

然后您可以使用 pymssql 成功连接到 SQL Azure(请注意,重要的一步是将运行此代码的 ip 地址添加到 Azure 门户 - 允许 ip 地址用于连接 sql azure 数据库。)

【讨论】:

    【解决方案2】:

    我目前正在使用以下代码连接azure sql

    def connect(server, database_name):
    try:
        conn = pymssql.connect(server=server['hostname'], user=server['db_user'], password=server['db_password'], database=database_name)
        return conn
    except:
        logging.warning("connection Error will continue")
        logging.exception('Got exception on connect to db {}, {}'.format(server, database_name))
        return None
    

    服务器结构基本上是一个带有密码和用户的字典

    我没有直接安装 freetds 并在虚拟环境中使用 pip install pymssql 并且它工作正常

    您可以在https://gist.github.com/srgrn/71f0786ca4779e3178b9f5d9c6d1ee80查看整个脚本

    【讨论】:

      【解决方案3】:

      我在连接到 Azure SQL 数据库时遇到了三个不同的问题,首先尝试使用 pymssql,然后尝试使用 pyodbc

      1. TDS_Version 必须在 (pyodbc) 连接字符串中设置。我可以连接 TDS_Version=7.1TDS_Version=7.2 但 7.3 和 8.0 会失败。

      2. 我必须明确设置PORT=1433 (previous port issue)

      3. 我试图连接我创建的user,这是不正确的。使用 login 连接到 azure:I can't login with a user I created in sql azure

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-05-22
        • 2020-01-03
        • 2017-05-14
        • 2020-07-20
        • 2014-01-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多