#python #python-3.x #pandas #dataframe #for-loop
Вопрос:
У меня есть это 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)
Теперь у меня есть сценарий, в котором я выполняю sql
из 3 разных баз данных и добавляю данные из 3 баз данных. Как это можно сделать, используя концепцию цикла.
У меня есть хозяин, как host1,host2,host3
У меня есть порт, как port1,port2,port3
У меня есть psw в качестве password1,password2,password3
У меня есть услуга, как service1,service2,service3
Как это можно запустить в цикле, извлечь и сохранить в кадре данных.
Ответ №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