Зафиксируйте использование pymysql, не работающего с цикломPython

Программы на Python
Ответить
Anonymous
 Зафиксируйте использование pymysql, не работающего с циклом

Сообщение Anonymous »

Я пытаюсь получить данные из таблицы исключений, а затем отредактировать изменения в таблице master_one, но фиксации не работают
Если я жестко запрограммировал один оператор обновления, который работает, но в цикле выполняется только последний оператор цикла.
def get_data():
res={}
tools = ['pim','siem','itrs']
with pymysql.connect(**db_config) as connection:
with pymysql.cursors.DictCursor(connection) as cursor:
cmdb_date = get_file_date('cmdb')
cursor.execute('SELECT * FROM Exception')
data = cursor.fetchall()
if data:
for row in data:
gid = row.get('gid')
new_val = row.get('new_value')
field = row.get('Field')
tool = field[2:]
remark = row['comment']
file_date = get_file_date(tool)
update_m_q = f'UPDATE master_one SET {field} = %s, m_update_{tool} = %s , {tool}_remark = %s where gid = %s;'
cursor.execute(update_m_q,(new_val,file_date,remark,gid))
connection.commit()

for tool in tools:
setting_na_tool(cursor,connection,tool)

tools.append('cmdb')
for tool in tools:
tool_date = get_file_date(tool)
queries = {#count(m_{tool})
'_int':f"SELECT * FROM master_one WHERE m_{tool}='TRUE' AND m_update_{tool}='{tool_date}' AND m_update_cmdb='{cmdb_date}';",
'not_int':f"SELECT * FROM master_one WHERE m_{tool}='FALSE' AND m_update_cmdb='{cmdb_date}';",
'na':f"SELECT * FROM recon.master_one where m_{tool} in ('NA') AND m_update_cmdb='{cmdb_date}';",
'prev_int':f"SELECT * FROM master_one WHERE m_{tool}='TRUE' AND m_update_{tool}!='{tool_date}' AND m_update_cmdb='{cmdb_date}';",
'in_flight':f"SELECT * FROM master_one WHERE m_{tool}='In-Flight' AND m_update_cmdb='{cmdb_date}';"
}
res[tool] = {'tool': tool,'date': tool_date}
for k,v in queries.items():
# print(v)
cursor.execute(v)
out =cursor.fetchall()
# print(out)
res[tool][k]=(out)

rendered_temps['card'] ={}
rendered_temps['table'] ={}
for tool in tools:
rendered_temps['card'][tool] = (tool,(res[tool]['_int']),(res[tool]['not_int']),(res[tool]['na']),(res[tool]['prev_int']),(res[tool]['in_flight']))
rendered_temps['table'][tool] = get_owner_count(res[tool]['_int'],res[tool]['not_int'],res[tool]['na'],'pim',res[tool]['prev_int'],res[tool]['in_flight'])
return rendered_temps


Подробнее здесь: https://stackoverflow.com/questions/793 ... th-looping
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»