无法使用 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 的依赖关系