python - 具有多个选择的 Pandas read_sql 查询

标签 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...)

这会导致两个单独的查询结果。

后续的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()

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

无论如何我都可以提取两个查询结果(可能使用字典),这样我就不必将查询分成多个脚本。

最佳答案

您可以执行以下操作:

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("---")

现在您可以查询每个表并连接结果:

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

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

关于python - 具有多个选择的 Pandas read_sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38646214/

相关文章:

python - 使用掩码替换 numpy 数组中的字符串会导致字符串被截断

sql - 有条件地选择一列

sql - 来自两个表的数据到一个 View 中

python - 使用日期逻辑创建假数据

python - scipy:如何使用 weibull_min.pdf?

python - 如何修复 Sublime Text 3 Python 构建错误?

sql - 如何获取此 sql 查询并将其转换为 nhibernate 查询

mysql - 比较顺序在连接查询中是否重要?

c# - 不同的模型从同一数据库的不同表中获取数据 ASP.NET MVC 4

请求 SQL 帮助 : SELECT Table A Joined with Table B (Max or Null)