【问题标题】:How to loop same sql query over different database instances and append data in python如何在不同的数据库实例上循环相同的sql查询并在python中附加数据
【发布时间】:2021-09-16 16:50:48
【问题描述】:

我有这个code,它与数据库建立连接并提取数据并存储到数据帧

当前代码

CONN_INFO = {'host': host,'port': port,'user': user,'psw': password,'service': service,}
CONN_STR = '{user}/{psw}@{host}:{port}/{service}'.format(**CONN_INFO)
connection=cx_Oracle.connect(CONN_STR)
cursor=connection.cursor()
cur.execute("""SELECT risk_level_01, risk_level_02, risk_type_code FROM public.md_risk_code""")

data=cur.fetchall()
columns = [column[0] for column in cur.description]
dfaws = pd.DataFrame(data,columns=columns)

现在我有一个场景,我从 3 个不同的数据库执行 sql 并附加来自 3 个 dbs 的数据。如何使用循环概念来做到这一点。

我的主机是host1,host2,host3

我的端口号是port1,port2,port3

我的密码是password1,password2,password3

我的服务是service1,service2,service3

这如何可以循环运行并提取并存储到数据帧中。

【问题讨论】:

    标签: python python-3.x pandas dataframe for-loop


    【解决方案1】:

    您可以拥有一个连接信息字典列表并循环浏览它们。使用每个连接信息建立到数据库的连接并提取您想要的数据并将其附加到您将在本地创建的数据框。

    伪代码将是:

    CONN_INFOS = [{"host":host1,.....}, {"host":host2,.....}, ....]
    df = pd.Dataframe() #Intialize a dataframe
    for CONN_INFO in CONN_INFOS:
       CONN_STR = '{user}/{psw}@{host}:{port}/{service}'.format(**CONN_INFO)
       connection=cx_Oracle.connect(CONN_STR)
       cursor=connection.cursor()
       cur.execute("""SELECT risk_level_01, risk_level_02, risk_type_code FROM public.md_risk_code""")
       data=cur.fetchall()
       #append data to dataframe
       #close each connection after used
    

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 2013-08-30
      • 2020-06-03
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多