在Ubuntu 14.04上使用Python连接到Microsoft Azure SQL数据库

时间:2015-07-08 16:19:18

标签: python sql-server ubuntu azure pymssql

我一直在尝试使用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数据库?

3 个答案:

答案 0 :(得分:4)

我能够使用我的Ubuntu框中的pymssql连接到ms sql server。

这就是我使用的:

#!/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指出的类似错误:

enter image description here

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

  1. 下载与您的Python版本对齐的pymssql .whl文件
  2. 通过pip,

    从.whl安装pymssql

    python -m pip D:\ whlFile.whl

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

答案 1 :(得分:4)

我目前正在使用以下代码连接到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

查看整个脚本

答案 2 :(得分:1)

我有三个单独的问题连接到Azure SQL数据库,首先尝试pymssql然后pyodbc

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

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

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

  4. 连接到azure