Aus*_*n B 9 python sql sql-server python-3.x pandas
read_sql查询可以处理带有多个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...)
Run Code Online (Sandbox Code Playgroud)
这导致两个单独的查询结果.
后续的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()
Run Code Online (Sandbox Code Playgroud)
只引入查询中的第一个表.
无论如何,我可以提取两个查询结果(可能使用字典),这将阻止我将查询分成多个脚本.
您可以执行以下操作:
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("---")
Run Code Online (Sandbox Code Playgroud)
现在您可以查询每个表并连接结果:
df = pd.concat([pd.read_sql_query(q, connection) for q in queries])
Run Code Online (Sandbox Code Playgroud)
另一种选择是在两个结果上使用 UNION,即在 SQL 中进行连接。
归档时间: |
|
查看次数: |
6090 次 |
最近记录: |