【问题标题】:Pyodbc Accessing Multiple Databases on same serverPyodbc 访问同一服务器上的多个数据库
【发布时间】:2013-10-08 20:45:18
【问题描述】:

我的任务是从同一服务器上的两个 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。

【问题讨论】:

    标签: python sql sql-server database pyodbc


    【解决方案1】:

    你想多了。如果你像上面那样设置连接,然后简单地将 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)
    

    你就完成了(在我自己的环境中测试,显然连接字符串和查询不同,但它确实有效。)

    【讨论】:

    • 是的,你是对的,我认为它不起作用,因为在连接字符串中只引用了一个数据库。谢谢你!
    • 只是想在需要 database2 后突出显示双点(单点就疯了)。谢谢你的回答!会节省大量资源消耗。
    【解决方案2】:

    虽然我只引用了连接中的一个表,但查询会自行处理,但查询在连接到两个数据库时都没有问题。不是 100% 确定,但我假设它可以工作,因为“[]”中的前缀

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-07
      • 2021-01-29
      • 2014-01-03
      • 2015-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多