gpt4 book ai didi

python-2.7 - 尝试通过Python 2.7和ctds连接到Azure数据仓库时出现_tds.InterfaceError

转载 作者:行者123 更新时间:2023-12-02 12:15:46 24 4
gpt4 key购买 nike

我正在尝试将python 2.7脚本连接到Azure SQL数据仓库。

编码部分已经完成,测试案例在我们的开发环境中工作。我们正在MacOS X中使用Python 2.7进行编码,并通过ctds连接到ADW。
当我们在Azure Kubernetes Pane (运行Debian 9)上进行部署时,会出现问题。
当我们尝试以这种方式实例化连接时:

# init a connection
self._connection = ctds.connect(
server='myserver.database.windows.net',
port=1433,
user="my_user@myserver.database.windows.net",
timeout=1200,
password="XXXXXXXX",
database="my_db",
autocommit=True
)

我们得到一个仅打印用户名的异常
my_user@myserver.database.windows.net

异常的类型是
_tds.InterfaceError

部署的代码完全相同,要求也相同。

我们发现的有关此异常的文档几乎不存在。

你们认识吗?您知道我们如何解决吗?

我们还尝试在旧的EC2和AWS Kubernetes的AWS实例(与Azure的操作系统运行相同的操作系统)中使用,但也无法正常工作。

我们设法通过sqlcmd连接到ADW,从而证明Pod实际上可以连接(我猜)。

编辑:已解决。刚刚更改为PYODBC
def connection(self):
""":rtype: pyodbc.Connection"""
if self._connection is None:

env = '' # whichever way you have to identify it
# init a connection

driver = '/usr/local/lib/libmsodbcsql.17.dylib' if env == 'dev' else '{ODBC Driver 17 for SQL Server}' # my dev env is MacOS and my prod is Debian 9
connection_string = 'Driver={driver};Server=tcp:{server},{port};Database={db};Uid={user};Pwd={password};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;'.format(
driver=driver,
server='myserver.database.windows.net',
port=1433,
db='mydb',
user='myuser@myserver',
password='XXXXXXXXXXXX'
)
self._connection = pyodbc.connect(connection_string, autocommit=True)

return self._connection

最佳答案

正如Ron所说,建议使用pyodbc,因为它使您可以使用Microsoft支持的ODBC Driver

我将继续猜测ctds重定向失败,您需要强制服务器进入“代理”模式。另请:Azure SQL Connectivity Architecture

例如

# Get SQL Server ID
sqlserverid=$(az sql server show -n sql-server-name -g sql-server-group --query 'id' -o tsv)

# Set URI
id="$sqlserverid/connectionPolicies/Default"

# Get current connection policy
az resource show --ids $id

# Update connection policy
az resource update --ids $id --set properties.connectionType=Proxy

关于python-2.7 - 尝试通过Python 2.7和ctds连接到Azure数据仓库时出现_tds.InterfaceError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56630089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com