tortoise orm 执行原生 SQL 查询
Tortoise ORM 提供了多种方式来执行 SQL 查询。
- 使用 execute_query_dict 方法执行查询,并以字典的形式返回查询结果:
from tortoise.backends.asyncpg import client
from typing import List, Optional
async def get_dashboard_info(dashboard_id: int) -> Optional[dict]:
query = f'SELECT * FROM dashboards WHERE id = {dashboard_id};'
result = await client.execute_query_dict(query)
return result[0] if result else None
- 使用 execute_query 方法执行查询,并以元组的形式返回查询结果:
from tortoise.backends.asyncpg import client
from typing import List, Optional
async def get_dashboard_info(dashboard_id: int) -> Optional[tuple]:
query = f'SELECT * FROM dashboards WHERE id = {dashboard_id};'
result = await client.execute_query(query)
return result[0] if result else None
需要注意的是,这种方式虽然可以方便地执行任意 SQL 查询语句,但同时也要注意 SQL 注入漏洞。最好的做法是使用 Tortoise ORM 提供的对象关系映射功能来进行数据库操作。
尽量避免使用原生sql,因为框架绝大多数情况已经满足,只是可能我们并不知道!!
License:
CC BY 4.0