2013-10-08 1 views
1

두 데이터베이스의 정보를 동시에 사용하는 단일 쿼리를 실행할 수 있도록 같은 서버에있는 두 개의 MS SQL 데이터베이스에서 데이터를 가져와야합니다. pyodbc 3.0.7을 사용하여 python 2.7에서이 작업을 수행하려고합니다. 내 쿼리는 다음과 같습니다만을 제공하는 데이터베이스 이름에 대한 액세스를 허용 할Pyodbc 동일한 서버에있는 여러 데이터베이스에 액세스하기

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

: 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' 

전형적인 연결처럼 보인다.

이 쿼리를 실행할 수 있도록 두 데이터베이스 모두에 대한 액세스를 허용하는 연결 설정 방법은 어떻게됩니까? 필자의 경우 두 데이터베이스 이름은 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 % 확신 할 수는 없지만 "[]"접두사로 인해 작동한다고 가정 한 메신저