From 9855abe0ec3e7b9dad13d4da1ed1cc20b52dfef3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AD=A6=E5=B3=B0?= Date: Fri, 1 Jul 2022 16:53:01 +0800 Subject: [PATCH] feature:add batch_insert_or_update_case --- models/tone_model.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/models/tone_model.py b/models/tone_model.py index 036e01d..c32f697 100644 --- a/models/tone_model.py +++ b/models/tone_model.py @@ -1,4 +1,5 @@ from sqlalchemy import Integer, Column, String, select, func +from sqlalchemy.dialects.mysql import insert from app import db from models import CommonModel @@ -32,11 +33,21 @@ async def query_tone_case_type(): async def query_tone_suite(page_num, page_size, condition): - select_orm = select(ToneCase.suite_id, ToneCase.suite_name, func.count(ToneCase.suite_name)) + select_orm = select(ToneCase.suite_id, ToneCase.suite_name, ToneCase.test_type, func.count(ToneCase.suite_name)) if len(condition) > 0: select_orm = select_orm.where(*condition) select_orm = select_orm.group_by(ToneCase.suite_name) select_orm = select_orm.limit(page_size).offset((page_num - 1) * page_size) async with db.conn() as session: results = await session.execute(select_orm) - return [{'suite_id': result[0], 'suite_name': result[1], 'nums': result[2]} for result in results] + return [{'suite_id': result[0], 'suite_name': result[1], 'test_type': result[2], 'nums': result[3]} for result in + results] + + +async def batch_insert_or_update_case(data): + insert_orm = insert(ToneCase).values(data) + on_duplicate_key_stmt = insert_orm.on_duplicate_key_update( + tone_case_id=insert_orm.inserted.tone_case_id + ) + await ToneCase.exec_orm(on_duplicate_key_stmt) + return -- Gitee