Python Pyodbc访问同一服务器上的多个数据库

Python Pyodbc访问同一服务器上的多个数据库,python,sql,sql-server,database,pyodbc,Python,Sql,Sql Server,Database,Pyodbc,我的任务是从同一台服务器上的两个MS SQL数据库获取数据,这样我就可以运行一个查询,同时使用来自两个数据库的信息。我试图用pyodbc 3.0.7在Python2.7中实现这一点。我的查询如下所示: Select forcast.WindGust_Forecast, forcast.Forecast_Date, anoSection.SectionName, refTable.WindGust FROM [EO1D].[dbo].[Dashboard_Forecast] forc

我的任务是从同一台服务器上的两个MS SQL数据库获取数据,这样我就可以运行一个查询,同时使用来自两个数据库的信息。我试图用pyodbc 3.0.7在Python2.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和FTSOutcaller。

您想得太多了。如果像上面那样设置连接,然后简单地将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)
导入pyodbc
连接字符串=“”
conn=pyodbc.connect(连接字符串)
cur=连接光标()
query='从表1 t1内部联接数据库中选择前10个*,表2 t2在t1.id=t2.id上'
当前执行(查询)

您已经完成了(在我自己的环境中进行了测试,显然连接字符串和查询是不同的,但它确实起作用了。)

尽管我只引用了连接中的一个表,但查询在连接到这两个数据库时没有问题。不是100%确定,但我假设它工作,因为前缀为“[]”

是的,你是对的,我假设它不工作,因为连接字符串中只引用了一个数据库。谢谢你!