将我的代码从本地计算机(Windows)连接到 azure SQL 以及部署到 azure 函数(python/linux)时,我收到以下错误
sqlalchemy.exc.OperationalError: (pyodbc.OperationalError) ('08001', '[08001] [Microsoft][SQL Server 的 ODBC 驱动程序 17]TCP 提供程序:A 数据库查找期间发生不可恢复的错误。 (11003) (SQLDriverConnect); [08001] [Microsoft][用于 SQL 的 ODBC 驱动程序 17 服务器]登录超时已过期(0); [08001] [微软][ODBC 驱动程序 17 对于 SQL Server]出现与网络相关或特定于实例的错误 建立与 SQL Server 的连接时发生。服务器不是 已找到或无法访问。检查实例名称是否正确以及SQL是否正确 服务器配置为允许远程连接。了解更多信息 请参阅 SQL Server 联机丛书。 (11003)')
我能够使用 SQL Server Management Studio 连接到 SQL Server
我的连接 SQL Server 的示例代码
from sqlalchemy import create_engine
connection_string = "mssql+pyodbc://user:[email protected]/mydatabase?driver=ODBC+Driver+17+for+SQL+Server"
self.engine = create_engine(connection_string, pool_size=100, max_overflow=20)
self.engine.connect()
请在连接字符串中添加以下项目:
;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;"
下面是我从另一个问题中提取的有关如何从 SqlAlchemy 连接的完整示例。
import urllib
from sqlalchemy import create_engine,text
import pandas as pd
server = 'servername.database.windows.net'
database = 'databasename'
username = 'username'
password = 'password!'
driver = '{ODBC Driver 17 for SQL Server}'
conn = f"""Driver={driver};Server=tcp:{server},1433;Database={database};
Uid={username};Pwd={password};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;"""
params = urllib.parse.quote_plus(conn)
conn_str = 'mssql+pyodbc:///?autocommit=true&odbc_connect={}'.format(params)
engine = create_engine(conn_str, echo=True)
query = 'SELECT @@version'
with engine.connect() as connection:
df = pd.read_sql_query(sql=text(query), con=connection)
print(df.to_markdown())