Sqlalchemy 连接SQL Server 登录失败

news/2024/10/6 4:34:34/文章来源:https://www.cnblogs.com/jusang486/p/18286177

实验系统环境

Windows平台
Sqlalchemy 2.0.23
Python 3.10
SQL Server 2012
aioodbc 0.5.0

问题详情

sqlalchemy.exc.InterfaceError: (pyodbc.InterfaceError) ('28000', '[28000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]登录失败。该登录名来自不受信任的域,不能与 Windows 身份验证一起使用。 (18452) (SQLDriverConnect); [28000] [Microsoft][ODBC Driver 17 for SQL Server]无效的连接字符串属性 (0); [28000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]登录失败。该登录名来自不受信任的域,不能与 Windows 身份验证一起使用。 (18452); [28000] [Microsoft][ODBC Driver 17 for SQL Server]无效的连接字符串属性 (0)')
image

官方写法

SQLAlchemy 2.0 文档中通过 aioodbc 驱动程序支持 Microsoft SQL Server 数据库。
注意:要求 SQLAlchemy版本V2.0.23+,否则会报错找不到插件
“Can't load plugin: sqlalchemy.dialects:aioodbc”

`from sqlalchemy.ext.asyncio import create_async_engine

engine = create_async_engine(
"mssql+aioodbc://scott:tiger@mssql2017:1433/test?"
"driver=ODBC+Driver+17+for+SQL+Server&TrustServerCertificate=yes"
)`

解决方案

1、环境依赖
1)确认Sqlserver连接配置的ODBC驱动已安装
查看 控制面板\系统和安全\管理工具 ==>> 点击查看 ODBC数据源\驱动程序 ,验证是否有ODBC驱动:
image

通常系统默认自带名为SQL Server的驱动,所以按理说driver='SQL+Server'应该是OK的。但实际在使用中不行!!!所以还是需要安装ODBC启动。

如 “ODBC Driver 17 for SQL Server”或以后版本
如果没有,官方下载 Version 17 路径:https://learn.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver15 或以上版本

2、增加 “IntegratedSecurity=false
示例如下:
`from sqlalchemy.ext.asyncio import create_async_engine

engine = create_async_engine(
"mssql+aioodbc://scott:tiger@mssql2017:1433/test?" "driver=ODBC+Driver+17+for+SQL+Server&TrustServerCertificate=yes&IntegratedSecurity=false"
)`

解释一下:
1)IntegratedSecurity
集成安全性为true时,意味着使用windows凭据对Server进行登录验证,它将自动与windows登录和密码一起被重写。因此,如果登录到另一个域控制器,那么它将失败。
当集成安全性为false时,Server将使用连接字符串中提供的Server登录名和密码。为此,Server实例必须将其身份验证模式配置为混合模式,即Server和Windows身份验证模式。

2)Trusted_Connection
可信任连接,一开始我设置的是Trusted_Connection=True,主要是使用本地数据库调试使用,设置Trusted_Connection=true,意味着将使用windows凭证验证用户,设不设密码都能访问。但这就涉及到一个安全问题了。所以交付一定要设置Trusted_Connection=false使用用户名和密码验证登陆,以防被别人"登录"、"注入语句"等。

通用写法

`
from sqlalchemy.ext.asyncio import create_async_engine

SQLALCHEMY_DATABASE_URL = (f"mssql+aioodbc://{SQLSERVER_USER}:{SQLSERVER_PASSWORD}@{SQLSERVER_HOST}:{SQLSERVER_PORT}/{SQLSERVER_DATABASE}?"
f"driver={SQLSERVER_DRIVER}&TrustServerCertificate=yes&IntegratedSecurity=false")

engine = create_async_engine(SQLALCHEMY_DATABASE_URL)
`

参考
1、https://docs.sqlalchemy.org.cn/en/20/dialects/mssql.html#module-sqlalchemy.dialects.mssql.aioodbc
2、https://cloud.tencent.com/developer/ask/sof/110044375

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/738846.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑使用什么远程控制软件?推荐使用安全软件ToDesk

当你面临紧急工作需求,但却和办公电脑相隔千里时,远程控制电脑就派上了用场! 初次使用远程控制软件的人,可能会担心使用时会不会存在信息被盗取,使用过后会不会发生被陌生人悄悄远控的情况 小社长向大家安利一个超好用的远程控制软件ToDesk!电脑远程控制高清不卡顿,传输…

便宜SSL证书申请Lets Encrypt泛域名SSL证书

随着互联网的飞速发展,网络安全问题愈发凸显其重要性。而HTTPS协议作为保障网站数据传输安全的重要手段,已经得到了广泛的应用。 申请Lets Encrypt便宜泛域名SSL证书步骤1. 登录来此加密网站,输入域名,可以勾选泛域名和包含根域。2. 选择加密方式,一般选择默认就可以了,也…

ToDesk云电脑实测!轻松应对游戏电竞、AIGC创作、设计建模等场景

万物智联时代,现代社会对数字计算的需求呈指数级增长。当算力成为推动技术创新和应用发展的重要引擎,云电脑产业正在悄然占据国内算力应用的市场,成为新时代的数字经济发展方向。1云电脑,顾名思义,是一台随时运行在云上的“电脑”,操作系统、存储、运算都能在云端上进行,…

ToDesk智能无损画质是什么功能?如何使用1

能跨设备跨系统远程控制设备的ToDesk相信大家都有用过,它不仅有流畅的远控体验,而且开发了许多实用的插件功能。 比如能直接从硬盘高速传资料的文件传输功能,官方实测能达到12m/s,还有能远程开关机,太方便远程办公完需要关电脑的打工人了。最近小社长还发现ToDesk远程控制…

Mingw GCC 编译OpenCV报错: Project files may be invalid

这是一个通用报错弹窗:具体要看下边输出窗口:CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool. CMake Error: CMAKE_CXX_COMPIL…

linux部署Hugegraph

HugeGraph是一款易用、高效、通用的开源图数据库系统(Graph Database)。 一、基本概述功能特性:HugeGraph实现了Apache TinkerPop3框架,并完全兼容Gremlin查询语言,具备完善的工具链组件,助力用户轻松构建基于图数据库之上的应用和产品。它支持百亿以上的顶点和边快速导入…

ComfyUI进阶篇:ComfyUI核心节点(一)

ComfyUI进阶篇:ComfyUI核心节点(一)前言:学习ComfyUI是一场持久战。当你掌握了ComfyUI的安装和运行之后,会发现大量五花八门的节点。面对各种各样的工作流和复杂的节点种类,可能会让人感到不知所措。在这篇文章中,我们将用通俗易懂的语言对ComfyUI的核心节点进行系统梳理,…

springboot实现登录demo

springboot,Jwt认证,登录实现简单的登录功能 实体类 定义实体类为User3类。 使用@Data:提供类的get,set,equals,hashCode,canEqual,toString方法; 使用@AllArgsConstructor:提供类的全参构造 使用@NoArgsConstructor:提供类的无参构造 类代码如下 @Data @AllArgsCon…

csv 导出工具

csv 导出工具一般大数据量导出 都会选择 csv 格式,就是存文本格式,相比excel 轻量级,同样数据量 csv 文件更小。工具类,分页导出 /*** Author: lyc* Date: 2024/07/05 16:27*/ @Slf4j public class CsvUtils {/*** 大数量导出** @param fileName 生成文件地址* @para…

虚拟ECU:纯电动汽车发展下的新选择

​人类文明的进步是一个不断自我否定、自我超越的过程。21世纪以来,随着科技进步和经济社会发展,能源和交通系统已从独立于自然环境的孤立系统,转变为与自然、技术、社会深度耦合的复杂系统。为实现可持续发展和应对气候变化,世界各国都在积极推进能源结构调整和技术创新,…

Python多线程-线程池ThreadPoolExecutor

1. 线程池 不是线程数量越多,程序的执行效率就越快。线程也是一个对象,是需要占用资源的,线程数量过多的话肯定会消耗过多的资源,同时线程间的上下文切换也是一笔不小的开销,所以有时候开辟过多的线程不但不会提高程序的执行效率,反而会适得其反使程序变慢,得不偿失。 为…

一个用来画拉氏图的简单Python脚本

这里我提供了一个用于画拉氏图的Python脚本源代码,供大家免费使用。虽然现在也有很多免费的平台和工具可以用,但很多都是黑箱,有需要的开发者可以直接在这个脚本基础上二次开发,定制自己的拉氏图绘制方法。技术背景 关于拉氏图的更多介绍,可以参考下这篇博客,这里简单引述…