Pandas read_sql consulta con selecciones múltiples

¿Puede la consulta read_sql manejar un script sql con múltiples declaraciones selectas?

Tengo una consulta de MSSQL que está realizando diferentes tareas, pero no quiero tener que escribir una consulta individual para cada caso. Me gustaría escribir solo una consulta y extraer las múltiples tablas.

Quiero las consultas múltiples en el mismo script porque las consultas están relacionadas y esto facilita la actualización del script.

Por ejemplo:

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

Lo que conduce a dos resultados de la consulta por separado.

El siguiente código de Python es:

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

Solo aparece la primera tabla de la consulta.

De todos modos, puedo obtener ambos resultados de la consulta (tal vez con un diccionario) que me impedirán tener que separar la consulta en varios scripts.

Podrías hacer lo siguiente:

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

Ahora puedes consultar cada tabla y concat el resultado:

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

Otra opción es usar UNION en los dos resultados, es decir, hacer la concat en SQL.