首页 文章

使用Python中的SQLAlchemy连接到Azure数据库

提问于
浏览
0

我正在尝试使用Python中的SQLAlchemy连接到Azure数据库 .

我的代码如下:

engine_azure = \
create_engine('mssql+pyodbc://{Server admin login}:{password}@{Server name}.database.windows.net:1433/{AdventureWorksLT}', echo=True)

我收到以下消息:

C:\ProgramData\Anaconda3\lib\site-packages\sqlalchemy\connectors\pyodbc.py:92: SAWarning: No driver name specified; this is expected by PyODBC when using DSN-less connections
  "No driver name specified; "

然后我运行以下代码:

print(engine_azure.table_names())

我收到以下消息:

DBAPIError: (pyodbc.Error) ('01S00', '[01S00] [Microsoft][ODBC Driver Manager] Invalid connection string attribute (0) (SQLDriverConnect)')

您的建议将不胜感激 .

1 回答

  • 0

    连接字符串有2个问题:

    • 根据SQLAlchemy documentationThe delimeters must be URL escaped 使用传递精确pyodbc字符串时 .

    • 并且您也没有指定sql驱动程序名称 .

    你可以使用下面的代码,这在我身边很好用:

    import pyodbc
    from sqlalchemy import create_engine
    import urllib
    
    params = urllib.quote_plus \
    (r'Driver={ODBC Driver 13 for SQL Server};Server=tcp:yourDBServerName.database.windows.net,1433;Database=dbname;Uid=username@dbserverName;Pwd=xxx;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;')
    conn_str = 'mssql+pyodbc:///?odbc_connect={}'.format(params)
    engine_azure = create_engine(conn_str,echo=True)
    
    print('connection is ok')
    print(engine_azure.table_names())
    

    测试结果:

    对于连接字符串,您可以通过访问azure portal - >您的数据库 - >连接字符串(在这种情况下选择ODBC)来获取它:

相关问题