首页 > 数据库 >Sqlalchemy 连接SQL Server 登录失败

Sqlalchemy 连接SQL Server 登录失败

时间:2024-07-05 17:08:54浏览次数:8  
标签:engine Sqlalchemy 17 ODBC Server aioodbc SQL

实验系统环境

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

标签:engine,Sqlalchemy,17,ODBC,Server,aioodbc,SQL
From: https://www.cnblogs.com/jusang486/p/18286177

相关文章

  • 【Unity几种数据存储之间的区别】PlayerPrefs、Json、XML、二进制、SQLite数据存储之
    ......
  • Aws Serverless最佳实践
    序言我是一个超级爱无服务器技术的工程师!这次去了AWSSUMMIT2024,学到了超多新知识!特别是关于“无服务器开发的最佳实践”的内容特别有趣,想跟大家分享一下。什么是无服务器无服务器技术简直是神器,让你不用操心服务器和基础设施管理,应用程序就能轻松跑起来。它的魅力在于,无需......
  • Mysql之基本操作(库,表,用户管理)
    库中有表,表中有数据一、查看帮助信息点击查看代码mysql>helpcreate//help后面跟上具体命令可以查看帮助二、查看支持的字符集点击查看代码showcharset;//查看支持的字符集默认拉丁文字latin1utf8|UTF-8Unicode//阉割版的utf8mb4|UTF-8Unicod......
  • 面试必会之Mysql篇
    1.Mysql查询语句的书写顺序Select[distinct]<字段名称>from表1[<join类型>join表2on<join条件>]where<where条件>groupby<字段>having<having条件>orderby<排序字段>limit<起始偏移量,行数>2.Mysql查询语句的执行顺序(8)Sele......
  • linux(CentOS)搭建MySQL数据库--详细版
    1、MySQL数据库去mysql官网下载需要安装的mysql版本,我这里用的是mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz将该压缩包放到/usr/local/mysql_store目录下,mysql_store目录需要自己手动创建,cd/usr/localmkdirmysql_store然后解压该压缩包,输入如下指令:tar-zxvfmy......
  • [Mysql]事务/隔离级别
    1.3事务在理解事务的概念之前,接触数据库系统的其他高级特性还言之过早。事务就是一组原子性的SQL查询,或者说一个独立的工作单元。如果数据库引擎能够成功地对数据库应用该组查询的全部语句,那么就执行该组查询。如果其中有任何一条语句因为崩溃或其他原因无法执行,那么所有的语句......
  • [Mysql]MVCC
    多版本并发控制MVCCMySQL的大多数事务型存储引擎实现的都不是简单的行级锁。基于提升并发性能的考虑,它们一般都同时实现了多版本并发控制(MVCC)。不仅是MySQL,包括Oracle、PostgreSQL等其他数据库系统也都实现了MVCC,但各自的实现机制不尽相同,因为MVCC没有一个统一的实现标准。可以......
  • openEuler下安装mysql
    环境:Os:openEuler2203sp41.1介质准备mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz该介质可以从官网上进行下载 1.1创建mysql用户和用户组root@ecs-d7c2-0417412~]#groupaddmysqlroot@ecs-d7c2-0417412~]#useraddmysql-s/sbin/nologin-M-gmysql1.1下载解压二......
  • MySQL数据库
    1.0数据模型1.1第一种        MySQL客户端链接MySQL自带的客户端命令行mysql[-h127.0.0.1][-P3306]-uroot-p1.2第二种使用命令:mysql-uroot-proot-u:用户名-p:密码1.3第三种:使用客户端软件navicat和sqlyog等关系型数据库建立在关系建模基础上,......
  • Flask 集成sqlalchemy
    Flask集成sqlalchemy一、ORM框架介绍1.框架概述SQLAlchemy类型:企业级ORM框架。特点:功能强大,使用广泛,支持多种数据库后端。适用性:可用于各种PythonWeb框架,包括Flask和FastAPI。Python界的ORM框架DjangoORM:专为Django框架设计,不适用于其他框架。Peewee:小......