Commit mit pymysql funktioniert nicht mit SchleifenPython

Python-Programme
Guest
 Commit mit pymysql funktioniert nicht mit Schleifen

Post by Guest »

Ich versuche, Daten aus der Ausnahmetabelle abzurufen und dann die Änderungen in der Tabelle „master_one“ zu bearbeiten, aber die Commits funktionieren nicht.
Wenn ich eine Update-Anweisung hart codiere, funktioniert das, aber in der Schleife nur die letzte Anweisung der Schleife wird ausgeführt.

Code: Select all

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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post