落日余晖

Python 查询多个数据源数据

需求场景

我有一个业务系统,按不同的处理实时性分开部署了两套环境,因此在出数据报表时很麻烦,所以想查询多个数据源的数据,再合并到一起输出数据报表。

实现逻辑

通过 Python 使用 cx_Oracle 连接到两个数据库,分别查询所需要的数据,并将查询结果加载到 pandas 的 DataFrame 中,再使用 concat 进行纵向合并。

import cx_Oracle
import pandas as pd

# 设置Oracle数据库连接信息
dsn1 = cx_Oracle.makedsn('hostname1', port1, service_name='service_name1')
dsn2 = cx_Oracle.makedsn('hostname2', port2, service_name='service_name2')

# 建立连接
conn1 = cx_Oracle.connect(user='username1', password='password1', dsn=dsn1)
conn2 = cx_Oracle.connect(user='username2', password='password2', dsn=dsn2)

# 查询数据
query1 = "SELECT * FROM table1"
query2 = "SELECT * FROM table2"

# 将查询结果加载到 DataFrame 中
df1 = pd.read_sql(query1, conn1)
df2 = pd.read_sql(query2, conn2)

# 关闭连接
conn1.close()
conn2.close()

# 合并数据
merged_df = pd.concat([df1, df2], ignore_index=True)

# 显示合并后的数据
print(merged_df)

# 如果需要将合并后的数据保存到文件中,例如 CSV 文件
merged_df.to_csv('merged_data.csv', index=False)