2013-10-08 63 views
1

我負責從同一臺服務器上的兩個MS SQL數據庫獲取數據,因此我可以同時運行使用兩個數據庫中的信息的單個查詢。我想用pyodbc 3.0.7在python 2.7中實現這一點。我的查詢是這樣的:Pyodbc訪問同一服務器上的多個數據庫

 Select forcast.WindGust_Forecast, forcast.Forecast_Date, anoSection.SectionName, refTable.WindGust 
    FROM [EO1D].[dbo].[Dashboard_Forecast] forcast 
    JOIN [EO1D].[dbo].[Dashboard_AnoSections] anoSection 
    ON forcast.Section_ID = anoSection.Record_ID 
    JOIN [EO1D].[dbo].[Dashboard_AnoCircuits] anoCircuits 
    ON anoSection.Circuit_Number = anoCircuits.Circuit_Number 
    JOIN [FTSAutoCaller].[dbo].[ReferenceTable] refTable 
    ON anoCircuits.StationCode = refTable.StationCode 
    Where refTable.Circuit IS NOT NULL and refTable.StationCode = 'sil' 

爲pyodbc典型的連接是這樣的:

cnxn = pyodbc.connect('DRIVER{SQLServer};SERVER=SQLSRV01;DATABASE=DATABASE;UID=USER;PWD=PASSWORD')

這將只允許訪問提供的數據庫名稱。

我該如何設置一個允許我訪問兩個數據庫的連接,以便可以運行此查詢。我的例子中的兩個數據庫名稱是EO1D和FTSAutoCaller。

回答

3

你正在推翻它。如果你像上面那樣設置連接,然後簡單地將sql傳遞給它應該工作的遊標。

import pyodbc 
conn_string = '<removed>' 
conn = pyodbc.connect(conn_string) 
cur = conn.cursor() 
query = 'select top 10 * from table1 t1 inner join database2..table2 t2 on t1.id = t2.id' 
cur.execute(query) 

和你做(在我自己的環境中測試,顯然是連接字符串和查詢是不同的,但它確實工作。)

+0

是的你是正確的我認爲它不會工作,因爲只有一個數據庫被連接字符串引用。感謝你的男人! –

0

的查詢接受其自我照顧,雖然我只引用一個查詢連接中的表沒有連接到兩個數據庫的問題。不是100%肯定,但我假設它的工作原因是因爲前綴「[]」

相關問題