5

我的机器上有一个名为“Test”的本地数据库,其中包含一个名为“Tags”的表。我可以通过 SQL Server management studio 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)')

(有或没有指定端口)

尝试替代连接字符串:

conn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost\Test,1433')

不会产生错误,但随后:

cur = conn.cursor()
cur.execute("SELECT * FROM Tags")

产生错误:

pyodbc.ProgrammingError: ('42S02', "[42S02] [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'Tags'. (208) (SQLExecDirectW)")

为什么会这样?

4

5 回答 5

5

我尝试将您的查询更改为

SELECT * FROM Test.dbo.Tags

它奏效了。

于 2012-07-12T15:50:28.270 回答
3

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

conn = pyodbc.connect('Trusted_Connection=yes', driver = '{SQL Server}',
                      server = 'localhost', database = 'Test')
cursor = conn.cursor()
# assuming that Tags table is in dbo schema
cursor.execute("SELECT * FROM dbo.Tags")
于 2011-10-03T15:05:21.677 回答
1

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

我采取了这些步骤:

  1. 在此处检查了 ODBC 版本(Windows 10)->
  2. (搜索)ODBC ->
  3. 选择 32/64 位版本 ->
  4. 驱动程序->
  5. 验证那里存在 ODBC 驱动程序版本。如果不是,请使用此链接下载相关驱动程序:这里

参考链接:这里

于 2018-10-05T18:23:42.293 回答
0

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

此连接缺少实例名称和端口不应该这样写。

我的连接是这样的:

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

在此处输入图像描述

于 2016-12-14T08:11:24.737 回答
0

尝试将 'localhost' 替换为 '(local)' 或 '.'。这个解决方案为我解决了这个问题。

于 2017-09-23T18:01:04.157 回答