2016-05-16 82 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) 
相關問題