python 无法使用pyodbc连接到Synapse Sql

b4lqfgs4  于 2023-02-28  发布在  Python
关注(0)|答案(1)|浏览(160)

我正在尝试使用Azure函数中的Python使用托管身份连接到Synapse Sql。下面是代码。

def fun():
    server = 'servername'
    db_name = 'dbname'
    conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER={'+server+'};Authentication=ActiveDirectoryIntegrated;DATABASE={'+db_name+'};')
    conn.timeout = 3000
    return conn

我得到下面的错误。

('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')

你知道我错过了什么吗
谢谢你。

ttp71kqs

ttp71kqs1#

我尝试使用python将我的Synapse SQL数据库与Active Directory身份验证连接,使用以下代码:

import pyodbc
server = '<servername>'
db_name = '<dbname>'
conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER={'+server+'};Authentication=ActiveDirectoryIntegrated;DATABASE={'+db_name+'};')
conn.timeout = 3000
return conn

我得到以下错误:

通过这个帮助,我安装了ODBC 13的SQL驱动程序,并使用下面的代码检查:

import sqlalchemy as sa
   
username = "username"
password = "password"
host = "<servername>"
database = "<dbname>"
authentication = "ActiveDirectoryPassword"
conn_string = sa.engine.url.URL.create(
     "mssql+pyodbc",
     username=username,
     password=password,
     host=host,
     port=1433,
     database=database,
     query={"driver": "ODBC Driver 13 for SQL Server","authentication": authentication},
 )
engine = sa.create_engine(conn_string, pool_timeout=30)
connection = engine.connect()

连接成功,未出现任何错误。

相关问题