Я пытаюсь получить данные из таблицы исключений, а затем отредактировать изменения в таблице 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
Зафиксируйте использование pymysql, не работающего с циклом ⇐ Python
Программы на Python
-
Anonymous
1737383663
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
Подробнее здесь: [url]https://stackoverflow.com/questions/79371651/commit-using-pymysql-not-working-with-looping[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия