Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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 使用Pyodbc在远程SQL Server中获取数据时出错_Python_Sql Server_Pyodbc - Fatal编程技术网

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条目中。