Pandas带多个选择的read_sql查询

2024-05-13 04:05:33 发布

您现在位置:Python中文网/ 问答频道 /正文

read_sql query可以处理包含多个select语句的sql脚本吗?

我有一个执行不同任务的MSSQL查询,但我不想为每个案例编写单独的查询。我只想编写一个查询并拉入多个表。

我希望在同一个脚本中有多个查询,因为这些查询是相关的,这样可以更容易地更新脚本。

例如:

SELECT ColumnX_1, ColumnX_2, ColumnX_3

FROM Table_X
INNER JOIN (Etc etc...)

----------------------
SELECT ColumnY_1, ColumnY_2, ColumnY_3

FROM Table_Y
INNER JOIN (Etc etc...)

这将导致两个独立的查询结果。

随后的python代码是:

scriptFile = open('.../SQL Queries/SQLScript.sql','r')
script = scriptFile.read()
engine = sqlalchemy.create_engine("mssql+pyodbc://UserName:PW!@Table")
connection = engine.connect()

df = pd.read_sql_query(script,connection)
connection.close()

只引入查询中的第一个表。

不管怎样,我都可以拉入两个查询结果(可能有一个字典),这样就不必将查询分成多个脚本。


Tags: from脚本readsqltableetcconnectionquery
1条回答
网友
1楼 · 发布于 2024-05-13 04:05:33

您可以执行以下操作:

queries = """
SELECT ColumnX_1, ColumnX_2, ColumnX_3

FROM Table_X
INNER JOIN (Etc etc...)
---
SELECT ColumnY_1, ColumnY_2, ColumnY_3

FROM Table_Y
INNER JOIN (Etc etc...)
""".split("---")

现在,您可以查询每个表并对结果进行concat:

df = pd.concat([pd.read_sql_query(q, connection) for q in queries])

另一种选择是对两个结果使用UNION,即在SQL中执行concat。

相关问题 更多 >