无法从 Windows 上的 Python 连接到 MSSQL Server
Unable to connect to MSSQL Server from Python on Windows
我无法在 Windows 10 上从 Python(3.4.4 64 位)连接到 SQL 服务器。这就是我所做的:
- 我发现 this 不错的图书馆。
- 然后,我按照this页面安装了FreeTDS
- 之后,我使用以下命令安装了 pymssql:
easy_install pymssql
- 在 SQL 服务器网络配置中,我为我的 SQLEXPRESS 实例启用了命名管道和 TCP/IP
所以,此时我可以使用 运行 SQL 服务器并连接到我的数据库,使用 SQL Server Management Studio。当我登录时,我使用 DESKTOP-1JA5E9F\SQLEXPRESS
作为服务器名称,sa
作为登录名,123
作为密码。此外,在 Python shell 我可以导入 pymssql
像:
>>> import pymssql
它不会引发任何错误。但是,我无法连接到我的数据库实例。我尝试了数十次尝试,例如:
conn = pymssql.connect(host=r'DESKTOP-1JA5E9F\SQLEXPRESS',
user=r'sa', password=r'123', database=r'reestr')
上面的代码 ^^^ 永远不会完成(我只看到 shell 中的 _
一直在闪烁)。我也试过这个:
conn = pymssql.connect(host=r'SQLEXPRESS', user=r'sa', password=r'123', database=r'reestr')
这导致 pymssql.InterfaceError: Connection to the database failed for an unknown reason.
。我试过这个:
conn=pymssql.connect(host=r'SQLEXPRESS:1433',user=r'sa',password=r'123', database=r'reestr')
它也会导致相同的错误消息。所以,如果有人知道那些可以达到目的的巫术魔法,欢迎你。
根据 docs, there's no host
keyword arg anymore, but server
. Also it should be server name, not instance name, or full instance name (with server name). See connect()
description , and examples of name construction for Connection
class.
在你的情况下,服务器名称是 DESKTOP-1JA5E9F
,.
和 (local)
也应该可以工作,因为你在本地机器上完成了这一切;您的命名实例名称是 SQLEXPRESS
。
像这样尝试:
import pymssql
#for instance with known name 'SQLEXPRESS'
conn = pymssql.connect(server=r'DESKTOP-1JA5E9F\SQLEXPRESS',
user=r'sa', password=r'123', database=r'reestr')
#on localhost this should work too
conn = pymssql.connect(server=r'.\SQLEXPRESS',
user=r'sa', password=r'123', database=r'reestr')
#for default instance with port taken from freetds.conf
#(this probably won't work for your case, because you use named instance
#instead of default instance, which is named MSSQLSERVER)
conn = pymssql.connect(server=r'DESKTOP-1JA5E9F', user=r'sa', password=r'123',
database=r'reestr')
#for instance on known port '1433'
conn = pymssql.connect(server=r'DESKTOP-1JA5E9F:1433', user=r'sa', password=r'123',
database=r'reestr')
如果这没有帮助,请使用 tsql
作为 described in the docs 测试连接,例如:
tsql -H DESKTOP-1JA5E9F -p 1433 -U sa -P 123 -D reestr
或者如果你有 freetds.conf
:
tsql -S 'DESKTOP-1JA5E9F\SQLEXPRESS' -U sa -P 123 -D reestr
我无法在 Windows 10 上从 Python(3.4.4 64 位)连接到 SQL 服务器。这就是我所做的:
- 我发现 this 不错的图书馆。
- 然后,我按照this页面安装了FreeTDS
- 之后,我使用以下命令安装了 pymssql:
easy_install pymssql
- 在 SQL 服务器网络配置中,我为我的 SQLEXPRESS 实例启用了命名管道和 TCP/IP
所以,此时我可以使用 运行 SQL 服务器并连接到我的数据库,使用 SQL Server Management Studio。当我登录时,我使用 DESKTOP-1JA5E9F\SQLEXPRESS
作为服务器名称,sa
作为登录名,123
作为密码。此外,在 Python shell 我可以导入 pymssql
像:
>>> import pymssql
它不会引发任何错误。但是,我无法连接到我的数据库实例。我尝试了数十次尝试,例如:
conn = pymssql.connect(host=r'DESKTOP-1JA5E9F\SQLEXPRESS',
user=r'sa', password=r'123', database=r'reestr')
上面的代码 ^^^ 永远不会完成(我只看到 shell 中的 _
一直在闪烁)。我也试过这个:
conn = pymssql.connect(host=r'SQLEXPRESS', user=r'sa', password=r'123', database=r'reestr')
这导致 pymssql.InterfaceError: Connection to the database failed for an unknown reason.
。我试过这个:
conn=pymssql.connect(host=r'SQLEXPRESS:1433',user=r'sa',password=r'123', database=r'reestr')
它也会导致相同的错误消息。所以,如果有人知道那些可以达到目的的巫术魔法,欢迎你。
根据 docs, there's no host
keyword arg anymore, but server
. Also it should be server name, not instance name, or full instance name (with server name). See connect()
description , and examples of name construction for Connection
class.
在你的情况下,服务器名称是 DESKTOP-1JA5E9F
,.
和 (local)
也应该可以工作,因为你在本地机器上完成了这一切;您的命名实例名称是 SQLEXPRESS
。
像这样尝试:
import pymssql
#for instance with known name 'SQLEXPRESS'
conn = pymssql.connect(server=r'DESKTOP-1JA5E9F\SQLEXPRESS',
user=r'sa', password=r'123', database=r'reestr')
#on localhost this should work too
conn = pymssql.connect(server=r'.\SQLEXPRESS',
user=r'sa', password=r'123', database=r'reestr')
#for default instance with port taken from freetds.conf
#(this probably won't work for your case, because you use named instance
#instead of default instance, which is named MSSQLSERVER)
conn = pymssql.connect(server=r'DESKTOP-1JA5E9F', user=r'sa', password=r'123',
database=r'reestr')
#for instance on known port '1433'
conn = pymssql.connect(server=r'DESKTOP-1JA5E9F:1433', user=r'sa', password=r'123',
database=r'reestr')
如果这没有帮助,请使用 tsql
作为 described in the docs 测试连接,例如:
tsql -H DESKTOP-1JA5E9F -p 1433 -U sa -P 123 -D reestr
或者如果你有 freetds.conf
:
tsql -S 'DESKTOP-1JA5E9F\SQLEXPRESS' -U sa -P 123 -D reestr