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

3

我一直在使用Microsoft SQL Server Management Studio图形界面连接到MSSQL SERVER 2008数据库,如此截图所示。

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

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

使用和不使用用户和密码标志,我总是遇到这个错误:
Traceback (most recent call last): File "", line 1, in File "_mssql.pyx", line 1887, in _mssql.connect (_mssql.c:20477) File "_mssql.pyx", line 632, in _mssql.MSSQLConnection.init (_mssql.c:6169) _mssql.MSSQLDriverException: 由于未知原因无法连接到数据库。
您能帮助我使用Python连接到此数据库吗(使用pymssql模块或其他方式)?我对Python和SQL都不熟悉,因此希望以最简单的方式完成。
我正在运行Windows 7 64位。 Pyhton v2.7.9

在您的屏幕截图中,您正在使用Windows身份验证,而您的代码正在使用SQL Server身份验证... 您的服务器是否设置为此? - thebjorn
@thebjorn 我不知道服务器是否设置了这个,但我希望我的代码可以使用Windows身份验证进行连接。让我给你一些背景:我正在撰写我的MSc论文,我被赋予了一堆数据库文件来提取数据。我是唯一访问存储在我的PC上的数据库的人。 - POliveira
我认为pymssql不再允许使用Windows身份验证进行连接(看起来该功能在2010年被删除)。如果您确实想使用Windows身份验证,则adodb库可以实现。 - thebjorn
2个回答

1
我建议您使用pyodbc。如果您正在使用anaconda,请使用pyodbc的3.0.10版本,例如:
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/

希望这个有效。

0

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

enter image description here

(你需要将此登录与用户等连接起来,但这与登录无关),然后使用

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

不要直接使用 _mssql 模块。


我创建了一个新的登录连接,然后通过SQL Server Management Studio界面测试该登录时,出现了这个错误 - POliveira
尝试使用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: 由于未知原因,无法连接到数据库。 - POliveira
这是一个 SQL Server 的设置问题(您需要配置您的 SQL Server 以接受通过 TCP/IP 的连接)。 - thebjorn
首先,让我感谢您的帮助。然而,我已经按照这里所描述的配置了MS SQL Server以接受tcp/ip连接,但我仍然无法使用新创建的用户成功连接到数据库。 - POliveira

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接