使用Python查询不同服务器上的多个SQL数据库

使用Python查询不同服务器上的多个SQL数据库,python,sql-server,database,Python,Sql Server,Database,我最近一直在通过SQL进行大量的手动数据分析、报告和仪表板操作,我想知道python是否能够将这些操作自动化。我对Python一点也不熟悉,所以我希望我的问题有意义。对于安全性/性能问题,我们将数据库存储在多个服务器(超过5个)上,这些服务器包含与查询相关的数据。不幸的是,这些服务器的设置使它们无法相互通信,因此我无法在同一查询中从两台服务器提取数据。我认为这是由于使用windows凭据/安全性造成的限制 对于我的数据分析和报告需求,我需要能够从其中两个或多个数据库中获取相关数据,因此我目前的做

我最近一直在通过SQL进行大量的手动数据分析、报告和仪表板操作,我想知道python是否能够将这些操作自动化。我对Python一点也不熟悉,所以我希望我的问题有意义。对于安全性/性能问题,我们将数据库存储在多个服务器(超过5个)上,这些服务器包含与查询相关的数据。不幸的是,这些服务器的设置使它们无法相互通信,因此我无法在同一查询中从两台服务器提取数据。我认为这是由于使用windows凭据/安全性造成的限制

对于我的数据分析和报告需求,我需要能够从其中两个或多个数据库中获取相关数据,因此我目前的做法是运行一个查询,获取结果,使用结果运行另一个查询,在excel中执行一些公式工作,然后运行另一个查询,等等,直到我得到所需的数据

不幸的是,这既费时,也使我需要提取大量数据集(数百万行),然后我必须根据上述数据库中的标准不断缩小数据集的范围

我知道Python有查询SQL Server的能力,但我想我应该问问专家:

我可以用Python在后台处理数据,就像用excel(查找、统计函数等,甚至是XML/webAPI)一样吗

Python能否同时处理到多个不同数据库服务器的连接

Python能很好地处理windows凭据吗

如果Python不是实现这一点的工具,您能说出一个更好的工具吗

请让我知道,如果我可以提供额外的相关细节

理想情况下,我希望最终创建我们自己的独立数据库,并创建自动化流程来从其他数据库中提取所有内容,但由于项目限制,目前这是不可能的


谢谢!

您可以按要求完成所有操作。Python允许通过库创建多个连接对象,例如,假设您使用MySQL Python,您可以创建两个不同的对象,如下所示:

不是实际代码,只是示例

conn1 = mysqlConnect(server1, user, pass)
conn2 = mysqlConnect(server2, user, pass)
这样,conn1连接到一个数据库,而conn2连接到另一个数据库,通常您会执行以下操作:

conn1.execute(query_to_server_1)
conn2.execute(query_to_server_2)

这有助于在同一脚本中维护两个不同的连接。如果您正在寻找多线程,python提供了一个难以置信的库,可以帮助您从一个主脚本执行多个任务。

我没有使用windows凭据。但我使用python同时处理多个MS-SQL数据库。它工作得非常好。您可以使用该库或更好的

但是我认为你应该先从Python的基本教程开始。因为你想处理数百万行,所以理解
列表
元组
dict
Python中非常重要。要获得良好的性能,你应该使用正确的类型

pymssql

import pymssql

conn1 = pymssql.connect("Host1", "user1", "password1", "db1")
conn2 = pymssql.connect("Host2", "user2", "password2", "db2")

cursor1 = conn1.cursor()
cursor2 = conn2.cursor()

cursor1.execute('SELECT * FROM TABLE1 LIMIT 10')
cursor2.execute('SELECT * FROM TABLE2 LIMIT 10')

result1 = cursor1.fetchall()
result2 = cursor2.fetchall()

# print each row
for row in result1:
   print(row)

# print each row
for row in result2:
   print(row)