Python 尝试连接到本地主机上的数据库时出现pyodbc连接错误

Python 尝试连接到本地主机上的数据库时出现pyodbc连接错误,python,sql,pyodbc,Python,Sql,Pyodbc,我的机器上有一个名为“Test”的本地数据库,其中包含一个名为“Tags”的表。我可以通过SQLServerManagementStudio 2008访问此数据库并从此表中进行查询 然而,当使用pyodbc时,我总是遇到问题 使用此选项: conn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost:1433;DATABASE=Test') 产生以下错误: pyodbc.Error: ('08001', '[08001] [Micros

我的机器上有一个名为“Test”的本地数据库,其中包含一个名为“Tags”的表。我可以通过SQLServerManagementStudio 2008访问此数据库并从此表中进行查询

然而,当使用pyodbc时,我总是遇到问题

使用此选项:

conn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost:1433;DATABASE=Test')
产生以下错误:

pyodbc.Error: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]Invalid connection. (14) (SQLDriverConnectW); [01000] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Invalid Instance()). (14)')
pyodbc.ProgrammingError: ('42S02', "[42S02] [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'Tags'. (208) (SQLExecDirectW)")
(有或没有指定端口)

正在尝试其他连接字符串:

conn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost\Test,1433')
不会产生错误,但是:

cur = conn.cursor()
cur.execute("SELECT * FROM Tags")
产生以下错误:

pyodbc.Error: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]Invalid connection. (14) (SQLDriverConnectW); [01000] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Invalid Instance()). (14)')
pyodbc.ProgrammingError: ('42S02', "[42S02] [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'Tags'. (208) (SQLExecDirectW)")

为什么会这样?

我在您的连接字符串中没有看到任何身份验证属性。试试这个(我正在使用Windows身份验证):


我尝试将您的查询更改为

SELECT * FROM Test.dbo.Tags
它成功了。

conn=pyodbc.connect('DRIVER={sqlserver};Server=localhost:1433;DATABASE=Test'))

此连接缺少实例名称,因此不应这样编写端口

我的连接是:

cn=pyodbc.connect('DRIVER={SQL Server};SERVER=localhost\SQLEXPRESS;PORT=1433;DATABASE=ybdb;UID=sa;PWD=*****')

尝试将“localhost”替换为“(local)”或“.”。此解决方案解决了我的问题。

对我来说,除了维护连接详细信息(用户、服务器、驱动程序、正确的表名等)之外

我采取了以下步骤:

  • 已在此处检查ODBC版本(Windows 10)->
  • (搜索)ODBC->
  • 选择32/64位版本->
  • 驱动程序->
  • 验证ODBC驱动程序版本是否存在。如果不是,请使用此链接下载相关驱动程序:

  • 参考链接:

    您还尝试了哪些其他组合?嗯,我从外部服务器复制了这个数据库,当我尝试连接到该服务器时,这个连接字符串(没有端口规范)起作用。i、 例如,“DRIVER={sqlserver};Server=DB-TEST-SRV;DATABASE=TEST”没有产生错误,以我上面指定的方式进行的查询产生了预期的结果,没有错误。