2016-07-28 26 views
7

Birden çok seçim deyimiyle bir sql komut dosyasını read_sql sorgulayabiliyor musunuz?Çoklu seçimlerle Pandas read_sql sorgu

Farklı görevler yürüten bir MSSQL sorgum var, ancak her bir durum için ayrı bir sorgu yazmak zorunda kalmak istemiyorum. Sadece bir sorgu yazmak ve birden çok tabloyu çekmek istiyorum.

Sorgularla ilgili olduğundan ve komut dosyasını güncelleştirmeyi kolaylaştırdığından aynı komut dosyasında birden çok sorguyu istiyorum. Örneğin

: iki ayrı sorgu sonuçlarına yol açar

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

.

sonraki piton kodudur:

scriptFile = open('.../SQL Queries/SQLScript.sql','r') 
script = scriptFile.read() 
engine = sqlalchemy.create_engine("mssql+pyodbc://UserName:[email protected]") 
connection = engine.connect() 

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

Sadece sorgudan ilk tablo içinde getirilir

yine de var ben (belki bir sözlüğü ile birlikte) her iki sorgu sonuçlarında indirebiliriz olacak. Sorguyu birden çok komut dosyasına ayırmamı engelleyin.

+0

Tek bir veri çerçevesine farklı sütun kümeleri nasıl sahip olmak istersiniz? – MaxU

+0

İçindeki tüm veri çerçeveleriyle bir sözlük oluşturmanın bir yolu olduğunu umuyorum. –

+0

"Birden çok komut dosyasına" ile ne demek istiyorsun? –

cevap

2

Aşağıdaki yapabilirdi:

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

Diğer bir seçenek yapmak yani iki sonuçlarına UNION kullanmaktır: Şimdi

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

her tabloyu sorgulamak ve neticesiyle concat SQL'de concat.

+0

.split yöntemi burada benim için daha iyi çalışıyor, çünkü iki sorgu birbiriyle ilgisiz (ancak benzer türevleri paylaşıyor). Teşekkürler! –