41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
from datetime import datetime
|
|
|
|
from app.general.general_utils.sql_utils import get_value, format_columns, get_value_sql, log_sql
|
|
|
|
UPDATE_EXCLUDE_FIELDS = ['id', 'createAt', 'createdBy']
|
|
|
|
|
|
def build_update_sql(module_config, row, param_update_fields=None):
|
|
row_id = get_value(row, 'id', None)
|
|
|
|
if row_id is None:
|
|
raise Exception("row_id is None")
|
|
|
|
column_info = format_columns(module_config["columns"])
|
|
sqls = [f"update {module_config['tableName']} set"]
|
|
values = []
|
|
|
|
field_sql_list = []
|
|
for hump_name, column in column_info['hump_to_columns'].items():
|
|
value = get_value(row, hump_name, None)
|
|
if hump_name in UPDATE_EXCLUDE_FIELDS:
|
|
continue
|
|
if not column['query'].startswith('t1.'):
|
|
continue
|
|
if hump_name != 'updateAt' and param_update_fields is not None and hump_name not in param_update_fields:
|
|
# 如果有指定更新的字段,并且humpName不在这个字段列表中,则不更新这个字段
|
|
continue
|
|
if hump_name == 'updateAt':
|
|
value = datetime.now().strftime('%%Y-%%m-%%d %H:%M:%S')
|
|
field_sql_list.append(f"{column['col_name']} = {get_value_sql(value=value, value_type=column['valueType'], sql_values=values, )}")
|
|
sqls.append(', '.join(field_sql_list))
|
|
sqls.append("where id = ?")
|
|
values.append(row_id)
|
|
|
|
sql = ' '.join(sqls)
|
|
log_sql(sql, values)
|
|
sql = sql.replace("?", "%s")
|
|
return (sql, values)
|
|
|
|
# build_update_sql(DEMO_MODULE_CONFIG, DEMO_QUERY_ROWS[0],['normalText','numberVal'])
|