Awk*_*bie 0 python sql-server sqlalchemy azure-sql-database
我使用 bwlow 代码通过 sqlalchemy 连接到 MS SQL,现在它已迁移到 azure cloud。我尝试更改值代码,但我认为这不是连接 ActiveDirectoryPassword 的正确方法
import sqlalchemy
from sqlalchemy import event, create_engine
# OLD connection string
engine = sqlalchemy.create_engine("mssql+pyodbc://" + "username" + ":" + "passkey" + "@" + "server" + "/" + "Database" + "?driver=SQL+Server"
@event.listens_for(engine, 'before_cursor_execute')
def receive_before_cursor_execute(conn, cursor, statement, params, context, executemany):
if executemany:
cursor.fast_executemany = True
cursor.commit()
# New connection string (for Active directory connection - not working)
engine = sqlalchemy.create_engine("mssql+pyodbc://" + "abc@domain.com" + ":" + "passkey" + "@" + "xxxx-svsql1.database.windows.net" + "/" + "Database" + "?driver=SQL+Server" + "Authentication=ActiveDirectoryPassword")
Run Code Online (Sandbox Code Playgroud)
请注意,我能够使用 pyodbc 成功连接,但无法通过以下操作使用 sqlalchemy 进行连接
请指导
我尝试了此代码并使用 Active Directory 密码成功连接到我的 Azure SQL 数据库。
import sqlalchemy
import urllib
import pyodbc
from sqlalchemy import event
params = urllib.parse.quote_plus("Driver={ODBC Driver 17 for SQL Server};Server=tcp:***.database.windows.net,1433;DATABASE=db_name;UID=***@***.com;PWD=***;Authentication=ActiveDirectoryPassword")
engine = sqlalchemy.create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)
@event.listens_for(engine, 'before_cursor_execute')
def receive_before_cursor_execute(conn, cursor, statement, params, context, executemany):
if executemany:
cursor.fast_executemany = True
cursor.commit()
conn=engine.connect()
print(conn)
Run Code Online (Sandbox Code Playgroud)
将 替换为UID您的 AD 帐户。
更多详细信息,请参阅此文档:连接到 PyODBC。
我的 Python 版本是 Python 3.7.3。
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
1357 次 |
| 最近记录: |