4

同じサーバー上の 2 つの MS SQL データベースからデータを取得する任務を負っているので、両方のデータベースからの情報を同時に使用する単一のクエリを実行できます。私はpyodbc 3.0.7を使用してpython 2.7でこれを達成しようとしています。私のクエリは次のようになります。

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

指定されたデータベース名へのアクセスのみを許可します。

このクエリを実行できるように、両方のデータベースにアクセスできるように接続を設定するにはどうすればよいでしょうか。私の場合の 2 つのデータベース名は、EO1D と FTSAutoCaller です。

4

2 に答える 2

5

難しく考えすぎだよ。上記のように接続をセットアップし、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)

これで完了です (自分の環境でテストしたところ、明らかに接続文字列とクエリが異なっていましたが、機能しました。)

于 2013-10-08T21:15:26.603 に答える