'commit'
This commit is contained in:
40
DbKit/Db.py
40
DbKit/Db.py
@@ -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更新操作(插入、更新、删除)(异步版本)
|
||||
|
||||
Reference in New Issue
Block a user