我的任务是从同一台服务器上的两个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')
只允许访问提供的数据库名称。
我将如何设置允许我访问两个数据库的连接,以便可以运行此查询。在我的例子中,两个数据库名称是EO1D和FTSAutoCaller。
答案 0 :(得分:4)
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)
你已经完成了(在我自己的环境中测试过,显然连接字符串和查询不同,但确实有效。)
答案 1 :(得分:0)
查询会自行处理,尽管我只引用了连接中的一个表,查询没有连接到两个数据库的问题。不是100%肯定,但我认为它是有效的,因为“[]”
中的前缀