【问题标题】:Python - MS SQL run multiple queries without losing previous queriesPython - MS SQL 运行多个查询而不会丢失以前的查询
【发布时间】:2018-12-03 01:26:15
【问题描述】:

我正在尝试使用 MS SQL 和 Python 自动化我的一些日常任务。 任何帮助表示赞赏!

我试图使用 pyodbc 来做到这一点。我必须在单个 MS SQL 服务器中访问多个数据库。这大概就是我想做的事情。

select col1, col2, col3 into #temp1 from db1.table1
select col4, col5, col6 into #temp2 from db2.table2
select a.*, b.* into #final from #temp1 a join #temp2 b on a.col1 = b.col 4

但是,当我尝试在 python 中运行这个顺序代码时会发生什么。它无法引用以前的临时表。

解决此问题的最佳方法是什么?

【问题讨论】:

  • 不要使用临时表。只需编写一个查询。

标签: python sql sql-server pyodbc


【解决方案1】:

使用单个查询而不是使用多个临时表。

喜欢:

select a.col1, a.col2, a.col3, b.col4, b.col5, b.col6
from db1.table1
join db2.table2 on a.col1 = b.col 4

PS:很可能您不需要从查询中返回 col4,因为您肯定知道它与 col1 具有相同的值(因为这是您连接两个表的方式)。

【讨论】:

    【解决方案2】:

    您正在使用本地临时表,它们只能在同一会话中访问。您可以使用全局临时表,使用 ## 代替 #,但不要忘记删除它们

    【讨论】:

    • 对于此解决方案,请确保在单个连接 (spid) 中运行所有查询。甚至全局临时表也不会持续超过 spid。或者正如 MS 在 documentation 中所说的那样 - “当创建表的会话结束并且所有其他任务都停止引用它们时,全局临时表会自动删除。”
    猜你喜欢
    • 2023-04-01
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多