Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用pymssql连接到SQL Server实例_Python_Sql Server_Pymssql - Fatal编程技术网

Python 使用pymssql连接到SQL Server实例

Python 使用pymssql连接到SQL Server实例,python,sql-server,pymssql,Python,Sql Server,Pymssql,我正在尝试使用pymssql(版本2.0.0b1-dev-20111019和Python 2.7.1)从Windows框连接到SQL Server实例。我从控制台尝试了最基本的方法: import pymssql c = pymssql.connect(host = r'servername\instance', user = 'username', password = 'userpassword') 对此,我得

我正在尝试使用pymssql(版本2.0.0b1-dev-20111019和Python 2.7.1)从Windows框连接到SQL Server实例。我从控制台尝试了最基本的方法:

import pymssql
c = pymssql.connect(host = r'servername\instance',
                    user = 'username',
                    password = 'userpassword')
对此,我得到了一个非常有用的错误:
interface错误:由于未知原因,与数据库的连接失败。

我有理由相信连接信息是正确的,因为当我使用adodbapi时,它可以与以下命令一起工作:

import adodbapi
c = adodbapi.connect(r'Provider=sqloledb;Data Source=servername\instance;User ID=username;password=userpassword;'
c.close
我尝试将端口号添加到主机参数中,得到了相同的结果。有人对如何着手解决这个问题有什么建议吗


顺便说一句,我在“”上看到了回复。OP最终通过正确配置FreeTDS解决了他的问题,据我所知,Windows上的pymssql不使用FreeTDS


根据@cha0site的建议,我尝试只使用主机名,而不是主机名和实例。这导致了相同的错误,但生成错误似乎需要更长的时间(尽管回溯仍然指示相同的行)。我一直指定该实例的原因是,除非我指定了该实例,否则我无法使用SSMS进行连接,因此我假设它对于其他连接是必要的


我现在也尝试了
pymssql.connect(host='servername',user='username',password='userpassword',database='instance')
,结果相同(基于@Sid的注释)。基于,我相信
数据库
参数用于指定用户要连接到的初始数据库,而不是实例

只是澄清一下,“instance”是安装SQL Server期间提供的名称,而不是安装中的数据库。我突然想到,pymssql可能不支持这种表示法,因此我将研究重新配置SQL Server实例,以便不需要它



现在,我已将SQL Server重新安装为默认实例,而不是命名实例,这允许我在不指定实例名称的情况下进行连接
adodbapi
仍然有效(没有
/instance
),但是
pymssql
仍然返回相同的错误。我还从新下载的存档文件(仍然是同一版本)中删除并重新安装了
pymssql

检查您的freetds.conf文件,查看是否设置了端口1219.,然后再次检查连接:

DB = pymssql.connect(host='DB',user='youruser',password='yourpwd',database='yourDBname')
编辑:我的freetds.conf文件Python的示例:

host = 'IP'
port = 1219

要指定host=servername\instanceserver=servername\instance,SQL server浏览器服务必须位于SQL server计算机上。

能否选择“我的答案”作为答案?谢谢您的时间。我已经回滚了对此问题所做的编辑。我觉得这些编辑主要是风格上的改变(我可以接受,但觉得没有必要),但也删除了重要的细节。这不是关于你,而是关于未来的堆栈溢出用户。大多数人不以英语为母语,我的风格变化是学习更好语法的关键。加上你的文本可读性差。尽管如此,我还是得到了我的编辑意见。谢谢你回复我。这是一个8年前的问题,我知道现在已经没有环境来测试这个答案了。然而,这个答案并不能解释我在
adodbapi
中使用的相同配置,但不能在
pymssql
中使用。如果这个解释是问题的根源,那么两个库都不应该能够连接。