在本地主机连接数据库时出现pyodbc连接错误

6 投票
5 回答
26971 浏览
提问于 2025-04-17 03:32

我在自己电脑上有一个叫做'Test'的本地数据库,里面有一个表叫'Tags'。我可以通过SQL Server管理工作室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)")

这可能是什么原因呢?

5 个回答

2

试着把'localhost'换成'(local)'或者'.'。这个方法对我解决了问题。

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")
6

我试着把你的查询改成了

SELECT * FROM Test.dbo.Tags

结果成功了。

撰写回答