как использовать вывод одного запроса в другой запрос в python? - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь использовать один вывод запроса в другом. но не получил правильного результата. Не могли бы вы помочь мне, как это сделать?

Пример:

query1 = "select distinct lower(tablename) as tablename from medaff.imedical_metadata where object_type = 'View'"

вывод вышеуказанного запроса:

tablename
vw_mdcl_insght
vw_fbms_interactions

Я хочу использовать приведенный выше вывод в других запрос. Примерно так -

query2 = "select * from medaff.imedical_business_metadata where objectname in ('vw_mdcl_insght', 'vw_fbms_interactions')"

Как сделать эту часть в python?

Я использую приведенный ниже код для запуска запроса:

conn = redshift_conn()

with conn.cursor() as cur:
      query1 = "select distinct lower(tablename) as tablename from medaff.imedical_metadata where object_type = 'View'"
      cur.execute(sql_query)
      result = cur.fetchall()
      print(result)
      conn.commit()

      query2 = "select * from medaff.imedical_business_metadata where objectname in ('vw_mdcl_insght', 'vw_fbms_interactions')"
      cur.execute(sql_query)
      result = cur.fetchall()
      print(result)
      conn.commit()

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

Я использовал следующий код:

query = "select distinct lower(tablename) from medaff.imedical_metadata where object_type = 'View'"
cur.execute(query)
res = cur.fetchall()
print(res)
res = tuple([item[0] for item in res])
res = str(res)
0 голосов
/ 14 июля 2020

Я думаю, вы можете просто использовать in запрос:

select ibm.*
from medaff.imedical_business_metadata ibm
where ibm.objectname in (select lower(im.tablename) as tablename
                         from medaff.imedical_metadata im
                         where im.object_type = 'View'
                        );

Лучше позволить базе данных делать работу.

...