Write database queries using tkms AsyncSqlSessionTemplate. Use when implementing dao layer, writing SQL, or when the user asks for database operations with insert/update/query_one/query_list.
使用 tkms 的 AsyncSqlSessionTemplate 进行数据库操作。适用于 app/dao 层,MySQL 8.0,UTF8 字符集。
python
from tkms.database.async_template import AsyncSqlSessionTemplate
python
async def add_user(self, user: UserEntity):
await self.session.insert(table=tuser, params=user, primarykey=tid)
python
async def update_user(self, user: UserEntity):
await self.session.update(table=tuser, params=user, primarykey=tid)
python
async def getbyid(self, user_id: int) -> UserEntity | None:
row = await session.query_one(
SELECT * FROM t_user WHERE id = :id,
{id: user_id}
)
return UserEntity(row) if row else None
python
async def getlist(self, status: int, page: int, pagesize: int):
offset = (page - 1) * page_size
rows = await session.query_list(
SELECT * FROM t_user WHERE status = :status ORDER BY id DESC LIMIT :limit OFFSET :offset,
{status: status, limit: page_size, offset: offset}
)
return [UserEntity(r) for r in rows]
python
async def countbystatus(self, status: int) -> int:
row = await session.query_one(
SELECT COUNT(*) as cnt FROM t_user WHERE status = :status,
{status: status}
)
return row[cnt] if row else 0
sql
CREATE TABLE t_user (
tid BIGINT PRIMARY KEY AUTO_INCREMENT,
id VARCHAR(64) NOT NULL UNIQUE,
name VARCHAR(128),
status TINYINT DEFAULT 1,
createtime DATETIME DEFAULT CURRENTTIMESTAMP,
updatetime DATETIME DEFAULT CURRENTTIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_status (status),
INDEX idxcreatetime (create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
若框架支持事务,批量操作应包裹在事务内,保证原子性。
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 gi-database-query-patterns-1776359162 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 gi-database-query-patterns-1776359162 技能
skillhub install gi-database-query-patterns-1776359162
文件大小: 2.3 KB | 发布时间: 2026-4-17 14:55