无法使用 Python 连接到 MSSQL Server 数据库

Posted

技术标签:

【中文标题】无法使用 Python 连接到 MSSQL Server 数据库【英文标题】:Unable to connect to MSSQL Server database using Python 【发布时间】:2015-01-25 01:18:43 【问题描述】:

我一直在使用 Microsoft SQL Server Management Studio 图形界面连接到 MSSQL SERVER 2008 数据库,如 this screenshot 中所述

我想使用 python 脚本连接到这个数据库。我安装了pymssql,但我无法连接到数据库。我尝试了以下命令:

import _mssql
conn = _mssql.connect(server="POLIVEIRA-PC\\MSSQLSERVER2008", user="POliveira-PC\\POliveira", password="my_password", database="database_name")

有和没有用户和密码标志。我总是以这个错误结束:

Traceback(最近一次调用最后一次): 文件“”,第 1 行,在 _mssql.connect (_mssql.c:20477) 中的文件“_mssql.pyx”,第 1887 行 _mssql.MSSQLConnection.init (_mssql.c:6169) 中的文件“_mssql.pyx”第 632 行 _mssql.MSSQLDriverException: 由于未知原因连接到数据库失败。

你能帮我使用 Python 连接到这个数据库吗(无论是否使用 pymssql 模块)。我没有使用 Python 的经验,也没有使用 SQL,因此我想以最简单的方式来做。

我正在运行 Windows 7 64 位。 Pyhton v2.7.9

【问题讨论】:

在您的屏幕截图中,您使用的是 Windows 身份验证,而您的代码使用的是 SQLserver 身份验证...您是否为此设置了服务器? @thebjorn 我不知道是否为此设置了服务器,但我希望我的代码能够使用 Windows 身份验证进行连接。让我给你一个背景:我正在写我的硕士论文,我得到了一堆数据库文件来从中提取数据。我是唯一一个访问数据库的人,该数据库存储在我的 PC 中。 我认为 pymssql 不再允许您使用 Windows 身份验证进行连接(看起来它在 2010 年的某个时候被删除了)。如果你真的想使用 windows 身份验证,那么 adodb 库可以做到这一点。 【参考方案1】:

我推荐你使用pyodbc,如果你使用anaconda,使用3.0.10版本的pyodbc,例如:

import pyodbc 
from urllib.parse import quote_plus    
params = quote_plus("DRIVER=SQL Server;SERVER=POLIVEIRA-PC\\MSSQLSERVER2008;DATABASE=dbname;UID=userid;PWD=password")
    try: cnxn = create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)
    except Exception as e:
        raise SystemExit('Error: Conexion Base de Datos SQL %s' % e)

如果问题是此链接中的远程连接,他们会谈论它

https://blogs.msdn.microsoft.com/walzenbach/2010/04/14/how-to-enable-remote-connections-in-sql-server-2008/

http://akawn.com/blog/2012/01/configuring-sql-server-2008-r2-express-edition-for-remote-access/

希望这可行

【讨论】:

【参考方案2】:

您需要使用 SQL Server 身份验证创建登录,然后与此用户连接:

(您需要将此登录名连接到用户等,但这与登录无关),然后使用

import pymssql
pymssql.connect(host=r"POLIVEIRA-PC\MSSQLSERVER2008", user='logintest', password='secret', database='database_name')

不要直接使用_mssql 模块。

【讨论】:

我创建了一个新的登录连接,然后,当我通过 SQL Server Management Studio 界面测试该登录时,我得到了this error 在尝试使用 pymssql 连接时,出现与之前类似的错误:Traceback (most recent call last): File "<stdin>", line 1, in <module> File "pymssql.pyx", line 639, in pymssql.connect (pymssql.c:10246) pymssql.InterfaceError: Connection to the database failed for an unknown reason. 这是一个 SQL Server 设置问题(您需要配置您的 sql server 以接受通过 tcp/ip 的连接)。 首先感谢您帮助我。但是,我确实将 MS SQL Server 配置为通过 tcp/ip 接受连接,如 here 所述,但我仍然无法使用新创建的用户成功连接到数据库。

以上是关于无法使用 Python 连接到 MSSQL Server 数据库的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio Code mssql 扩展无法连接到服务器

使用 Typeorm 连接到 Nestjs 中的 mssql,但 Nest 无法解析 EmployeeRepository 的依赖关系

python ubuntu使用pyodbc连接到mssql服务器

无法连接到 docker 托管的 MSSQL

SQLAlchemy 无法连接到 mssql 数据库

无法从 Spring 应用程序连接到 mssql 服务器