2016-05-16 141 views
0

我一直在通过SQL最近做了大量的手动数据分析,报告和仪表板登机,并且想知道python是否能够自动执行很多操作。我根本不熟悉Python,所以我希望我的问题是有道理的。对于安全/性能问题,我们将数据库存储在包含与查询相关的数据的大量服务器(超过5个)上。不幸的是,这些服务器的设置使得它们无法相互通信,所以我无法从同一查询中的两台服务器中获取数据。我相信这是由于使用Windows凭据/安全性的限制。使用Python查询不同服务器上的多个SQL数据库

对于我的数据分析和报告需求,我需要能够从两个或多个这些目标中获取相关数据,所以我目前这样做的方式是运行查询,获取结果,运行另一个带查询结果的查询,在Excel中做一些公式工作,然后运行另一个查询等等,直到我得到我需要的。

不幸的是,这既耗费时间,也使我拉大量数据集(在数百万行),然后我不得不根据所述数据库中的标准不断缩小。

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

我可以操纵与Python类似的背景,我怎么可以用Excel(查找做数据统计功能等,甚至XML /的WebAPI?

在同一时间Python的手柄连接到多个不同的数据库服务器?

不Python的处理Windows凭据呢?

如果Python的是不是这个工具,你能说出一个更好的工作吗?

请让我知道,如果我可以提供更多的相关细节。

理想情况下,我想最终创建自己的独立数据库并创建自动化进程以从其他数据库中提取所有内容,但目前由于项目限制而无法实现。

谢谢!

回答

0

你可以做所有你问的。 Python允许通过库创建多个连接对象,因此,例如,假设你使用MySQL的蟒蛇,你会创建一个这样两个不同的对象:

不是实际的代码,只需示例

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提供了一个令人难以置信的库,它将帮助你从一个主脚本执行多个任务。

0

我没有使用Windows凭据。但我已经使用Python与多个MS-SQL数据库同时工作。它工作得很好。你可以使用库或更好SQLAlchemy

但我认为你应该从一个关于Python的基本教程开始。因为您想要使用数百万行,因此了解list,,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) 
相关问题