sqlalchemy_modify_sql.py 1.26 KB
#modify sql using sqlalchemy

import pandas as pd

import sqlalchemy
sqlalchemy.__version__
#%%
import clarity_to_csv as ctc
eng_clarity = ctc.get_clarity_engine(host='claritydev.uphs.upenn.edu', database='clarity')
conn = eng_clarity.connect()

#%%
metadata_obj = sqlalchemy.MetaData()


#%%  It works when we treat TextualSelect as a subquery!!!
sql_text = sqlalchemy.text("SELECT PAT_ID, COUNT(1) ENC_CNT FROM PAT_ENC GROUP BY PAT_ID")

txtsel = sql_text.columns(sqlalchemy.sql.column('PAT_ID'), sqlalchemy.sql.column('ENC_CNT'))
#txtsel = sql_text.columns(sqlalchemy.sql.column('PAT_ID'))

sq = txtsel.subquery()

selobj = sqlalchemy.select(sq).where(sq.c.PAT_ID == 'Z3153680')

res = conn.execute(selobj)
res.keys()

df = pd.read_sql(selobj, con=conn)

#%% What is the from clause method??



sqlalchemy.select(txtsel)


sqlalchemy.select(sqlalchemy.sql.column('PAT_ID')).select_from(txtsel)



sqlalchemy.select_from(txtsel)






#%%  Posted on Stack overflow but I'm pretty sure its not the answer
sql_text = sqlalchemy.text("SELECT * FROM PAT_ENC ORDER BY PAT_ID")

mytab = sqlalchemy.Table(sql_text, metadata_obj, autoload_with=eng_clarity)

stmt = sqlalchemy.select(mytab).where(mytab.c.PAT_ID == 5)

conn.execute(stmt)