如何使用 Active Directory 集成身份验证通过 python SQL alchemy 连接到 Azure sql 数据库

2023-11-22

我正在尝试使用 python 中的 SQL Alchemy 连接到 Azure SQL 数据库。该数据库最近从本地迁移到 Azure,据我所知,azure 不支持 Windows Auth。
我可以使用 Active Directory 集成身份验证从 SSMS 连接到数据库。

当数据库位于本地时,我将使用以下连接字符串并且它有效:

"mssql+pyodbc://@*Server*/*DB*?driver=SQL Server"

我尝试了一些其他连接字符串,但无法使其工作。

"mssql+pyodbc://@*Server*/*DB*?driver=SQL Server?Integrated Security=true"
"mssql+pyodbc://@*Server*/*DB*?driver=SQL Server?Trusted_Connection=true"

我不断收到以下错误,似乎 sql alchemy 默认情况下正在尝试通过 windows 身份验证进行连接,无论如何我可以解决这个问题吗?

(pyodbc.Error) ('HY000', '[HY000] [Microsoft][ODBC SQL Server Driver][SQL Server]Windows logins are not supported in this version of SQL Server. (40607) (SQLDriverConnect); [HY000] [Microsoft][ODBC SQL Server Driver][SQL Server]Windows logins are not supported in this version of SQL Server. (40607)')
(Background on this error at: http://sqlalche.me/e/dbapi)

据我所知,你的所有需求都在官方文档中Using Azure Active Directory with the ODBC Driver.

首先,如果您想通过以下方式连接到 Azure SQL 数据库,则只有 MS SQL Server 的 odbc 驱动程序 17 版本支持 Active Directory 集成身份验证pyodbc。因此,请确保您已经安装了 SQL Server 的最新 odbc 驱动程序,或者您可以从以下位置下载https://learn.microsoft.com/en-us/sql/connect/odbc/microsoft-odbc-driver-for-sql-server?view=sql-server-2017.

其次,请遵循以下部分UI Additions for Azure Active Directory (Windows driver only)为 SQL Azure 的 Azure Active Directory 集成身份验证配置 DSN。

然后,您可以按照以下代码连接到 SQL Azure:SQL Alchemy with pyodbc.

from urllib import parse
from sqlalchemy import create_engine

connecting_string = 'Driver={ODBC Driver 17 for SQL Server};Server=tcp:<your sql azure server name>.database.windows.net,1433;Database=<your database name>;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;Authentication=ActiveDirectoryIntegrated'
params = parse.quote_plus(connecting_string)

engine = create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)
connection = engine.connect()
result = connection.execute("select 1+1 as res")
for row in result:
    print("res:", row['res'])
connection.close()

注意:上面连接字符串的值,您可以从Azure门户上的``选项卡中复制它,但请注意更改odbc驱动程序版本并删除UID and PWD选项。

enter image description here

使用 Windows Integrated 或 Active Directory Integrated 进行连接 (仅限 Windows 驱动程序)身份验证,指定身份验证=ActiveDirectoryIntegrated在连接字符串中。这 驱动程序将自动选择正确的身份验证模式。UID and PWD不得指定。

或者你可以考虑使用Authentication=ActiveDirectoryPassword这比Authentication=ActiveDirectoryIntegrated和代码如下。

from urllib import parse
from sqlalchemy import create_engine

your_user_name = '<your AAD user or configured in SQL Azure Server as the figure below>'
your_password_here = '<your AAD account password>'
#connecting_string = 'Driver={ODBC Driver 17 for SQL Server};Server=tcp:sqlserverleon.database.windows.net,1433;Database=dbleon;Uid='+your_user_name+';Pwd='+your_password_here+';Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;Authentication=ActiveDirectoryPassword'
connecting_string = 'Driver={ODBC Driver 17 for SQL Server};Server=tcp:sqlserverleon.database.windows.net,1433;Database=dbleon;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;Authentication=ActiveDirectoryIntegrated'
params = parse.quote_plus(connecting_string)

engine = create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)
connection = engine.connect()
result = connection.execute("select 1+1 as res")
for row in result:
    print("res:", row['res'])
connection.close()

enter image description here

希望能帮助到你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Active Directory 集成身份验证通过 python SQL alchemy 连接到 Azure sql 数据库 的相关文章

  • 在创建 IDENTITY 的同一个 T-SQL 语句中获取 IDENTITY 值?

    有人问我是否可以有一个插入语句 其中有一个作为 身份 列的 ID 字段 以及分配的值是否也可以插入到同一插入语句中同一记录中的另一个字段中 这可能吗 SQL Server 2008r2 Thanks 你不能真正做到这一点 因为将用于的实际值
  • 是否有与 f 字符串语法等效的可调用函数?

    每个人都喜欢 Python 3 6 的新 f 字符串 In 33 foo blah bang In 34 bar blah In 35 f foo bar Out 35 bang 然而 虽然在功能上非常相似 但它们的语义并不完全相同str
  • IP保持不变

    我正在尝试通过代码连接到 Tor 并更改我的身份 到目前为止我得到的结果是我连接成功但无法更改我的身份 这是我的代码 import socket import socks import httplib def connectTor sock
  • 如何在pytorch中动态索引张量?

    例如 我有一个张量 tensor torch rand 12 512 768 我得到了一个索引列表 说它是 0 2 3 400 5 32 7 8 321 107 100 511 我希望从给定索引列表的维度 2 上的 512 个元素中选择 1
  • 为什么del是Python中的指令而不是方法? [复制]

    这个问题在这里已经有答案了 为什么Python的创建者更喜欢这种语法 指令 del list index 超过这个 方法 list del index 在我看来 这del属于同一 类别 append remove find ETC 因此应该
  • Plotly:如何制作具有多条线和标准差阴影区域的图形?

    How can I use Plotly to produce a line plot with a shaded standard deviation I am trying to achieve something similar to
  • 忽略 NaN 的列表理解

    我正在尝试构建一个列表理解 其条件是不导入 nan 值 但运气不佳 以下是当前代码以及结果输出 什么条件会将 nan 从列表中删除 def generate labels filtered df columnName return labe
  • 访问具有动态名称的变量的值

    我发现了几个主题 其中讨论了在循环中动态创建单个变量是不好的做法 最好使用字典 就我而言 我不需要动态创建它们 我想要access他们在循环中 我不想用字典对于他们来说 因为这些变量在代码中的很多地方使用 并且只有一个地方我需要这种动态访问
  • 如何更改 PostgreSQL 表中列的数据类型?

    在 PostgreSQL 交互式终端中输入以下命令会导致错误 ALTER TABLE tbl name ALTER COLUMN col name varchar 11 更改列的数据类型的正确命令是什么 请参阅此处的文档 http www
  • 将2个暗淡数组“列表列表”输出到python中的文本文件

    简单的问题 我正在创建一个两个暗淡的数组 ddist 0 d for in 0 d 在下面的代码中使用列表 它使用 gis 数据输出距离 我只是想要一种简单的方法来获取数组 列表的结果并将其输出到保持相同的 N N 结构的文本文件 我过去曾
  • 将人员分配到床位 - 自动化方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我每年都会帮助举办青年营 将与会者分配到卧室是一项艰巨的任务 有 92 个卧室 活动持续一周 与会者停留的时间长短不一 而且床需要重复
  • 打开 PDF 到书签/指定目标?

    我正在尝试使用 python 打开特定书签的 PDF 到目前为止 我可以在命令提示符中运行以下命令并得到我想要的 last是 PDF test pdf 中指定目的地的名称 C Program Files x86 Adobe Reader 1
  • AWS Cognito 作为网站的 Django 身份验证后端

    我对 Cognito 的理解是 它可以用来代替本地 Django 管理数据库来对网站的用户进行身份验证 然而 我没有找到任何带有通过 Cognito 登录屏幕的基本 Hello World 应用程序的详细示例 如果有人可以发布一篇文章 逐步
  • 在 Python 中将主题标头添加到 server.sendmail()

    我正在编写一个 python 脚本来从终端发送电子邮件 在我目前发送的邮件中 它没有主题 我们如何为此电子邮件添加主题 我当前的代码 import smtplib msg From email protected cdn cgi l ema
  • 为文件中的每个单词创建字典并计算其后面的单词的频率

    我正在尝试解决一个难题 却迷失了方向 这就是我应该做的 INPUT file OUTPUT dictionary Return a dictionary whose keys are all the words in the file br
  • Pytorch RuntimeError:张量 a (4) 的大小必须与非单维 0 处张量 b (3) 的大小匹配

    我使用的代码来自here https www learnopencv com image classification using transfer learning in pytorch 训练模型来预测印刷样式编号0 to 9 idx t
  • 阅读 setup.py 中的 README

    所以 我想要long description我的设置脚本的内容是我的README md文件 但是当我这样做时 源代码发行版的安装将失败 因为python setup py sdist不复制自述文件 有没有办法让distutils core
  • 在这些情况下,如何检测意外的辅助角色故障并重新处理数据?

    我想创建一个在 Windows Azure 中托管的 Web 服务 客户端将上传文件进行处理 云将处理这些文件 生成结果文件 客户端将下载它们 我想我将使用 Web 角色来处理 HTTP 请求 使用辅助角色来进行实际处理 并使用 Azure
  • Django ALLOWED_HOSTS 与 CORS(django-cors-headers)

    ALLOWED HOSTS 和 CORS 之间有什么区别 如果我定义了 ALLOWED HOSTS 我还需要定义 CORS 吗 我没有使用 django 模板 我也有可能动态定义这两个吗 我认为没有 我使用 django 作为后端 并在不同
  • python函数中的Return语句不返回任何内容[重复]

    这个问题在这里已经有答案了 我不明白退货和打印之间的区别 有人告诉我应该在函数语句中使用 return 但它不会返回任何内容 所以我一直在函数中使用 print 但我想了解为什么我的函数中的 return 语句不起作用 def triang

随机推荐

  • 巨大的 XML 文件到文本文件

    我有一个巨大的 XML 文件 15 GB 我想将 XML 文件中的 文本 标签转换为单个页面 XML 文件示例
  • 在 Delphi 中开发具有管理员权限的应用程序

    我在Windows 7下使用D2010编写一个似乎需要管理员权限的应用程序 我认为是因为它使用COM与第三方 exe进行通信 这也需要管理员权限 我已根据需要添加了清单资源 但是当我尝试从 IDE 调试应用程序时 它会报告 无法创建进程 请
  • 缺少必需参数:redirect_uri 和 Passport-google-oauth

    Using passport google oauth 0 2 0 在我的 MEAN Stack 应用程序中 在这里找到 https github com jaredhanson passport google oauth 当我运行应用程序
  • 套接字编程的替代方案是什么?

    我正在浏览编程疑难解答 我想知道套接字编程的替代方案是什么 如果有的话 假设您可以控制所使用的协议 您可以选择更高级别的抽象 例如 NET 的 Remoting 或 WCF
  • 获取主窗口的位置/宽度/高度[重复]

    这个问题在这里已经有答案了 我想知道获取有关主窗口当前位置和宽度 高度信息的最佳方法 我想在主窗口内保留一个子窗口 因此我想在子窗口的移动功能期间检查 MainWindows 边框的坐标 我只能找到 Window LocationChang
  • 当页面完全呈现时,如何执行 JavaScript 函数?

    当页面完全呈现 显示 时 您将如何执行 JavaScript 函数我知道onLoad事件在页面加载时但在渲染之前执行 我之前已经通过使用间隔为 0 的超时来解决这个问题 这似乎通常有效 但对于我敏感的情感来说似乎有点不优雅 有没有正确的方法
  • 是否可以更改 Spacy 分词器的分词规则?

    默认情况下 德语 spacy 分词器不会按斜杠 下划线或星号进行拆分 这正是我所需要的 因此 der die 会生成单个标记 然而 它确实在括号上拆分 因此 dies und das 被拆分为 5 个标记 有没有一种 简单 方法告诉默认标记
  • Video.js YouTube 视频

    我无法让 youtube 视频与 video js 一起使用 我在头部添加了 然后在正文中
  • Proguard 阻止 WebView 中的 Javascript 工作

    我有一个 JSBridge 类 内部类 它是一个 javascript 接口 private class JsBridge implements JsCallback param handlerName method required pa
  • 调试 Flash 应用程序时如何仅抑制 [SWF] 跟踪

    我正在开发一个 Adob e Flex 应用程序 该应用程序加载大量 Flex 模块和其他 Flash 子应用程序和 Flash 资源 每次成功加载 flashlog txt 时 Flex 控制台都会显示类似 SWF filename sw
  • 如何知道指针是否在物理内存中,否则会触发页面错误?

    如果我有一个指针并且我关心内存访问性能 我可能会检查它的下一个操作是否会触发页面错误 如果可以的话 可以设计一种算法 重新排序循环操作以最大限度地减少页面错误 是否有任何可移植 或linux windows不可移植 的方法来检查特定内存地址
  • facebook API 中的刷新令牌和访问令牌

    当我们在 google api 上执行 oauth2 时 我们会获得一个访问令牌和一个刷新令牌 假设我正在编写一个服务 并且我想定期轮询更改 我可以在每次当前访问令牌失效时使用刷新令牌来获取新的访问令牌 这就是所谓的离线访问 有没有办法在
  • 将Base64图像上传到S3并返回URL

    我正在尝试使用 Python 将 Base64 图像上传到 S3 存储桶 我用谷歌搜索并得到了一些答案 但没有一个对我有用 有些答案使用 boto 而不是 boto3 因此它们对我来说毫无用处 我也尝试过这个链接 Boto3 将文件从bas
  • 如何使用 Shell 脚本在 Linux 中读取 Excel 工作表中的数据? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 每个人 我是 Linux 新手 对编写 shell 脚本非常感兴趣 这次我正在制作一个Excel表格 在该 Excel 工作表中会有 S No 在第一列中 域名在第二列中 我的 Exc
  • iframe下处理#document的方法

    对于我现在正在测试的门户 我遇到了无法创建任何 xpath 定位器的问题 过了一段时间我发现这是因为 document 这会切断路径并生成简单的 复制 xpath 将路径引导至完全不同的元素 document CODE 我发现这个问题的解决
  • Ionic:如何在 $ionicPopup 中使用 cssClass?

    所以我想修改 ionicPopup 中的默认宽度 为此我必须将 cssClass 添加到我的弹出对象中 就像下面的代码一样 scope getScore function var popupScore ionicPopup alert ti
  • ClusterManager setOnCameraIdleListener

    在尝试实施使用时ClusterManager 我注意到getMap setOnCameraChangeListener clusterManager 已弃用 查看 Github 上的 android maps utils 示例 我注意到ge
  • Xcode 4 无法从静态库依赖项中找到公共头文件

    辅助搜索的替代标题 Xcode 找不到标头 Xcode 中缺少 h 未找到 Xcode h 文件 未找到词法或预处理器问题文件 我正在开发一个来自 Xcode 3 的 iOS 应用程序项目 我现在已经迁移到 Xcode 4 我的项目构建了许
  • Javascript检测android本机浏览器

    我想用 javascript 检测本机 Android 浏览器 每部 Android 手机上都安装的浏览器 我应该在 useragent 中寻找什么 这应该有效 var nua navigator userAgent var is andr
  • 如何使用 Active Directory 集成身份验证通过 python SQL alchemy 连接到 Azure sql 数据库

    我正在尝试使用 python 中的 SQL Alchemy 连接到 Azure SQL 数据库 该数据库最近从本地迁移到 Azure 据我所知 azure 不支持 Windows Auth 我可以使用 Active Directory 集成