This commit is contained in:
HuangHai
2026-01-21 08:41:47 +08:00
parent 306a3a4127
commit e51dc18d06
40 changed files with 1309 additions and 965 deletions

View File

@@ -444,7 +444,15 @@ class Db:
pass
# 检查是否为SQL模板名称并处理
if self._is_sql_template(sql):
# 即使不是模板名称,如果包含点号,我们也尝试在加载后检查它是否真的是模板
is_template = self._is_sql_template(sql)
if not is_template and '.' in sql:
# 如果包含点号但没在映射中找到,可能是因为缓存加载问题,尝试重新加载映射
if hasattr(self.sql_loader, '_build_template_map'):
self.sql_loader._build_template_map()
is_template = self._is_sql_template(sql)
if is_template:
try:
logger.debug(f"确认为SQL模板: {sql}")
@@ -620,7 +628,14 @@ class Db:
logger.debug(f"处理后的页码: {page_number}, 每页大小: {page_size}")
# 使用_is_sql_template方法检查并获取SQL模板
if self._is_sql_template(sql):
is_template = self._is_sql_template(sql)
if not is_template and '.' in sql:
# 如果包含点号但没在映射中找到,可能是因为缓存加载问题,尝试重新加载映射
if hasattr(self.sql_loader, '_build_template_map'):
self.sql_loader._build_template_map()
is_template = self._is_sql_template(sql)
if is_template:
try:
logger.debug(f"确认为SQL模板: {sql}")
@@ -840,6 +855,27 @@ class Db:
# 如果所有策略都失败,返回默认查询
return "SELECT COUNT(*)"
async def check_column_exists(self, table_name, column_name):
"""检查表中是否存在指定列
Args:
table_name: 表名
column_name: 列名
Returns:
bool: 如果列存在返回True,否则返回False
"""
try:
# 兼容 Doris 和 MySQL 的语法
sql = f"SHOW COLUMNS FROM {table_name} LIKE :column_name"
params = {"column_name": column_name}
# 使用 find 方法执行查询
result = await self.find(sql, params)
return len(result) > 0
except Exception as e:
logger.debug(f"检查列是否存在时出错 (可能表不存在): {str(e)}")
return False
@db_retry()
async def execute_update(self, sql, params=None, session=None):
"""执行SQL更新操作(插入、更新、删除)(异步版本)