当前位置:  开发笔记 > 编程语言 > 正文

Microsoft Azure数据仓库和SqlAlchemy

如何解决《MicrosoftAzure数据仓库和SqlAlchemy》经验,为你挑选了1个好方法。

我正在尝试使用python的sqlalchemy库连接到Microsoft Azure数据仓库。并收到以下错误:

 (pyodbc.Error) ('HY000', '[HY000] [Microsoft][ODBC SQL Server Driver][SQL Server]Client driver version is not supported. (46722) (SQLDriverConnect); [HY000] [Microsoft][ODBC SQL Server Driver][SQL Server]Client driver version is not supported. (46722)')

我的Windows连接代码:

import sqlalchemy
user_name = 'userName'
password = 'password'
uri = 'sqlServerName'
db_name = 'SQLDBName'
db_prefix = 'mssql+pyodbc://'
db_driver = '{SQL Server}'
connection_string = "{db_prefix}{user_name}:{password}@{uri}/{db_name}?Driver={driver}".format(
                db_prefix=db_prefix, user_name=user_name, password=password, uri=uri, db_name=db_name,
                driver=db_driver)
engine = sqlalchemy.engine.create_engine(connection_string, echo=echo, pool_size=20,
                                                          max_overflow=100)
engine.connect()  # throws the error

提前致谢!



1> Peter Pan..:

根据您的代码,看来该问题是由使用错误引起的Driver={SQL Server}

在Azure门户上,可以按照以下图所示的步骤获取连接字符串。

正确的odbc驱动程序名称应为Driver={ODBC Driver 13 for SQL Server}。同时,请按照教程安装正确版本3.1.1pyodbc为当前的环境。

这是我的测试代码,如下所示。

import sqlalchemy

connection_string = "mssql+pyodbc://@:@.database.windows.net:1433/?driver=ODBC+Driver+13+for+SQL+Server"
engine = sqlalchemy.engine.create_engine(connection_string)
engine.connect()

要么

import sqlalchemy
import urllib

params = urllib.quote_plus("Driver={ODBC Driver 13 for SQL Server};Server=.database.windows.net,1433;Database=;Uid=@;Pwd=;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;")
engine = sqlalchemy.engine.create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)
engine.connect()

sqlalchemy.exc.ProgrammingError: (pyodbc.ProgrammingError) ('42000', "[42000] [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Catalog view 'dm_exec_sessions' is not supported in this version. (104385) (SQLExecDirectW)")运行上面的代码时出现异常,但这似乎并不影响工作。

而且我仅使用测试下面的代码pyodbc,它可以完美地工作。

import pyodbc
cnxn = pyodbc.connect("Driver={ODBC Driver 13 for SQL Server};Server=.database.windows.net,1433;Database=;Uid=@;Pwd=;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;")
cursor = cnxn.cursor()
cursor.execute("select @@VERSION")
row = cursor.fetchone()
if row:
    print row

输出:

(u'Microsoft Azure SQL Data Warehouse - 10.0.8529.1 Jan 13 2017 22:49:03 Copyright (c) Microsoft Corporation', )

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有