This commit is contained in:
HuangHai
2026-01-13 20:01:57 +08:00
parent a9b0d125d2
commit 099f8fb148
4 changed files with 24 additions and 16 deletions

View File

@@ -956,10 +956,10 @@ class Db:
# logger.info(f"准备插入数据到表 {table_name},主键字段: {primary_key}")
# 构建插入SQL
# 构建插入SQL (移除 RETURNINGDoris/MySQL 不支持)
columns = ', '.join(data.keys())
placeholders = ', '.join([f":{key}" for key in data.keys()])
sql = f"INSERT INTO {table_name} ({columns}) VALUES ({placeholders}) RETURNING {primary_key}"
sql = f"INSERT INTO {table_name} ({columns}) VALUES ({placeholders})"
logger.debug(f"生成的插入SQL: {sql}")
logger.debug(f"插入参数: {data}")
@@ -971,14 +971,20 @@ class Db:
session = await self.get_session()
is_own_session = True
# 执行插入并获取主键
# 执行插入
result = await session.execute(text(sql), data)
await session.commit()
# 获取插入的主键值
primary_key_value = result.scalar()
# logger.info(f"数据插入成功,主键值: {primary_key_value}")
return primary_key_value
# 如果 data 中包含主键,直接返回
if primary_key in data:
return data[primary_key]
# 否则尝试获取 lastrowid (某些 DB 支持)
try:
return result.lastrowid
except:
return None
except Exception as e:
logger.error(f"数据插入失败: {str(e)}")
if session:

Binary file not shown.