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.
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
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]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 [/code]
wurde mir gesagt, dass eine Weile effizienter als eine für Schleife ist. (C /C ++)
Dies schien vernünftig, aber ich wollte einen Weg finden, ihn zu beweisen oder zu widerlegen. Each containing...
Ich versuche einfach meine Abfragen und deren Parameter mit der Funktion pYMYSQL.CURSOR.MOGRIFY () wie in der Dokumentation detaillierter detailliert zu protokollieren. python-1 |...
Bildbeschreibung hier eingeben. First hier ... jeder sagt, dass Flask die beste Community über Überlauf hat. Bitte helfen Sie mir ... Ich möchte meine Flask -App bereitstellen. Alle Regeln folgten,...
Bildbeschreibung hier eingeben. First hier ... jeder sagt, dass Flask die beste Community über Überlauf hat. Bitte helfen Sie mir ... Ich möchte meine Flask -App bereitstellen. Alle Regeln folgten,...
Ich verwende Pre-Commit. In einem der Hooks verwende ich ein Python-Skript, das die Yaml-Bibliothek importiert.
Wenn ich jedoch versuche, etwas zu committen, erhalte ich bei diesem Hook die folgende...