From cdb201a0ce470cf53c14337b9392a6a678a40578 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 19 Sep 2025 10:52:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20base=20sql=20querydict=E5=8F=AF?= =?UTF-8?q?=E4=BC=A0=E5=85=A5=E6=98=AF=E5=90=A6=E6=A0=BC=E5=BC=8F=E5=8C=96?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/utils/sql.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/apps/utils/sql.py b/apps/utils/sql.py index 6bbaa73a..e856c371 100644 --- a/apps/utils/sql.py +++ b/apps/utils/sql.py @@ -1,4 +1,6 @@ from django.db import connection +from django.utils import timezone +from datetime import datetime def execute_raw_sql(sql: str, params=None): """执行原始sql并返回rows, columns数据 @@ -23,7 +25,7 @@ def format_sqldata(columns, rows): return [columns] + rows, [dict(zip(columns, row)) for row in rows] -def query_all_dict(sql, params=None): +def query_all_dict(sql, params=None, with_time_format=False): ''' 查询所有结果返回字典类型数据 :param sql: @@ -36,9 +38,19 @@ def query_all_dict(sql, params=None): else: cursor.execute(sql) columns = [desc[0] for desc in cursor.description] + if with_time_format: + results = [] + for row in cursor.fetchall(): + row_dict = {} + for col, val in zip(columns, row): + if isinstance(val, datetime): + val = timezone.make_naive(val).strftime("%Y-%m-%d %H:%M:%S") + row_dict[col] = val + results.append(row_dict) + return results return [dict(zip(columns, row)) for row in cursor.fetchall()] -def query_one_dict(sql, params=None): +def query_one_dict(sql, params=None, with_time_format=False): """ 查询一个结果返回字典类型数据 :param sql: @@ -49,6 +61,13 @@ def query_one_dict(sql, params=None): cursor.execute(sql, params or ()) # 更简洁的参数处理 columns = [desc[0] for desc in cursor.description] row = cursor.fetchone() + if with_time_format: + row_dict = {} + for col, val in zip(columns, row): + if isinstance(val, datetime): + val = timezone.make_naive(val).strftime("%Y-%m-%d %H:%M:%S") + row_dict[col] = val + return row_dict return dict(zip(columns, row)) if row else None # 安全处理None情况 import pymysql