Python 使用Pyodbc在远程SQL Server中获取数据时出错
原始代码:Python 使用Pyodbc在远程SQL Server中获取数据时出错,python,sql-server,pyodbc,Python,Sql Server,Pyodbc,原始代码: src_db = pyodbc.connect( driver="{SQL SERVER}", server="LAPTOP-A8RM9C82\SQLEXPRESS", uid="admin", pwd="admin1234", database="bloom", ) cursor = src_db.cursor() return cursor 在同一台计算机上
src_db = pyodbc.connect(
driver="{SQL SERVER}",
server="LAPTOP-A8RM9C82\SQLEXPRESS",
uid="admin",
pwd="admin1234",
database="bloom",
)
cursor = src_db.cursor()
return cursor
在同一台计算机上运行SQL Server和Python时,它可以正常工作。部署时,SQL Server位于不同的计算机上
我如何知道这两台机器可以通信:
- 这台机器连接在同一个网络上,我可以Ping每台机器的IP地址(服务器端和客户端)
- 尝试在服务器端运行示例web,并且可以在客户端访问(客户端可以使用SQL server从服务器端登录用户)
打开防火墙中的端口。由于我使用的是pyodbc
,因此我在服务器上添加了一个端口,如本文所述,但仍然没有连接
#server = 'myserver,port'
server="LAPTOP-A8RM9C82\SQLEXPRESS,49172"
我找到了一种连接它的方法,通过像这样分离服务器和端口
server="LAPTOP-A8RM9C82\SQLEXPRESS"
port="49172"
现在我可以访问数据库,但每当我尝试执行查询选择、插入、更新或删除时,它都会给我一个错误无效的对象名
。有人能帮我吗?我的道歉dbo.users
有效,但我的表名bloom.products
产生以下错误
#ERROR
pyodbc.ProgrammingError: ('42S02', "[42S02] [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'dbo.users'. (208) (SQLExecDirectW)")
当我使用bloom.bloom.products
时,它可以工作。我只想知道为什么dbo.users
有效,而不是bloom.products
result = cursor.execute("SELECT * FROM bloom.bloom.products").fetchall()
print(result)
PS:自从我在同一台机器上试用以来,所有的查询都有效,两台计算机上的数据库都相同。将database=bloom
添加到您的DSN条目中。