当前位置: 首页 > wzjs >正文

网站开发开发只做正品的购物网站

网站开发开发,只做正品的购物网站,电商关键字优化,dw做的网站后台是什么SQLAlchemy 2.x 异步查询中常用的 结果处理方法速查表,包含方法说明、使用场景、返回类型及典型用途。 SQLAlchemy 查询结果处理方法速查表(适用于 AsyncSession) 方法 说明 返回类型 示例 SQL 示例输出 scalars().all() 获取单列所有…

SQLAlchemy 2.x 异步查询中常用的 结果处理方法速查表,包含方法说明、使用场景、返回类型及典型用途。

SQLAlchemy 查询结果处理方法速查表(适用于 AsyncSession)

方法

说明

返回类型

示例 SQL

示例输出

scalars().all()

获取单列所有值

List[Any]

select(User.id)

[1, 2, 3, 4]

scalars().first()

获取单列的第一行

Any

select(User.email)

"alice@example.com"

scalar()

获取第一行的第一列(聚合)

Any

select(func.count(User.id))

27

mappings().all()

多列,每行为 dict 映射

List[dict]

select(User.id, User.email)

[{'id': 1, 'email': 'a@xx.com'}, {'id': 2, 'email': 'b@xx.com'}]

mappings().first()

返回第一行 dict 映射

dict

select(User.id, User.name)

{'id': 1, 'name': 'Alice'}

first()

返回第一行的 Row

`Row

None`

select(User.id, User.name)

fetchall()

返回所有行 Row 对象列表

List[Row]

select(User.id, User.name)

[(1, 'Alice'), (2, 'Bob')]

fetchone()

返回一行 Row

Row

select(User.id, User.name)

(1, 'Alice')

all()

返回所有 Row(非字典)

List[Row]

select(User.id, User.name)

[(1, 'Alice'), (2, 'Bob')]

one()

获取唯一一行,若多行/无行报错

Row

select(User).where(User.id==1)

User(id=1, name='Alice')

one_or_none()

获取一行或 None

`Row

None`

select(User).where(User.id==9999)

使用建议(按类型):

  • 获取单列(如用户 ID) → 用 scalars().all()
  • 统计总数/最大值 → 用 scalar()
  • 获取结构化多列数据(用于 JSON 返回) → 用 mappings().all()
  • 查找某条记录详情 → 用 mappings().first()one_or_none()
  • 返回原始 SQL 风格 Row → 用 fetchall() / all()(不推荐)

详细解释与建议:

  • scalars()
    • 专门用于查询 单列,如 select(User.id)
    • 会自动去除 Row 封装,只返回具体值
  • mappings()
    • 用于查询 多列,将每一行封装为 dict(字段名:值)
    • 最常用在结构化响应返回中(如 JSON)
  • first()one()
    • first():最多一行,超过无所谓,返回第一行
    • one():必须返回一行,返回多行或无行都抛异常
  • fetchall() / fetchone()
    • 老式用法,返回 Row 对象(类似元组)
    • 不推荐在现代异步代码中使用,建议用 scalars() / mappings() 替代

推荐使用方式总结:

查询类型

推荐方式

单列、多行

scalars().all()

单列、单值

scalar()scalars().first()

多列、多行

mappings().all()

多列、单行

mappings().first()one_or_none()

真实使用示例(异步 FastAPI):

async def test_get_single_column():async with session_factory() as session:query = select(User.id)result = await session.execute(query)user_ids = result.scalars().all()print("用户 ID 列表:", user_ids)  # 用户 ID 列表: [1, 3]# 2. 统计总数/最大值 → 用 scalar()
async def test_aggregate_functions():async with session_factory() as session:# 统计用户总数total_count = await session.execute(select(func.count(User.id)))total = total_count.scalar()print("用户总数:", total)  # 用户总数: 2# 查找最大的角色 IDmax_role_id = await session.execute(select(func.max(User.role_id)))max_role_id_value = max_role_id.scalar()print("最大的角色 ID:", max_role_id_value)  # 最大的角色 ID: 2# 3. 获取结构化多列数据(用于 JSON 返回) → 用 mappings().all()
async def test_get_structured_data():async with session_factory() as session:query = select(User.id, User.user_name, User.email)result = await session.execute(query)users = result.mappings().all()print("结构化多列数据:", users)# 结构化多列数据: [{'id': 1, 'user_name': 'test', 'email': '123@qq.com'},# {'id': 3, 'user_name': 'test1', 'email': '456@qq.com'}]# 4. 查找某条记录详情 → 用 mappings().first() 或 one_or_none()
async def test_find_single_record():async with session_factory() as session:# 使用 mappings().first()query = select(User.id, User.user_name, User.email).where(User.id == 1)result = await session.execute(query)user = result.mappings().first()print("使用 mappings().first() 查找的记录:", user)# 使用 mappings().first() 查找的记录: {'id': 1, 'user_name': 'test', 'email': '123@qq.com'}# 使用 one_or_none()user_obj = await session.execute(select(User).where(User.id == 1))user_result = user_obj.scalars().one_or_none()print("使用 one_or_none() 查找的记录:", user_result)# 使用 one_or_none() 查找的记录: <login_related.model.user.User object at 0x000001477DC206D0># 5. 返回原始 SQL 风格 Row → 用 fetchall() / all()(不推荐)
async def test_get_raw_rows():async with session_factory() as session:query = select(User.id, User.user_name, User.email)result = await session.execute(query)rows = result.all()print("原始 SQL 风格 Row:", rows)# 原始 SQL 风格 Row: [(1, 'test', '123@qq.com'), (3, 'test1', '456@qq.com')]

 


文章转载自:

http://HdXQK7hC.rxrzd.cn
http://jqNBWwIk.rxrzd.cn
http://gMTlyskm.rxrzd.cn
http://Is9TXjbU.rxrzd.cn
http://BUHxW2T0.rxrzd.cn
http://I9wf9NO7.rxrzd.cn
http://FaWWJ4FP.rxrzd.cn
http://20Lf0Rwy.rxrzd.cn
http://crXJXh5N.rxrzd.cn
http://OqK7Fm9y.rxrzd.cn
http://FWUTklNU.rxrzd.cn
http://NOJ5HFu0.rxrzd.cn
http://29wnHnMm.rxrzd.cn
http://uownitA9.rxrzd.cn
http://lZcLIKej.rxrzd.cn
http://5xElIsmI.rxrzd.cn
http://vCfkMcjj.rxrzd.cn
http://ogGTTc13.rxrzd.cn
http://AWg9HO0c.rxrzd.cn
http://zB9gFNvS.rxrzd.cn
http://ruB4L72Z.rxrzd.cn
http://b6gI19vw.rxrzd.cn
http://EJNWi7E2.rxrzd.cn
http://zlcTqSbr.rxrzd.cn
http://cEu0saod.rxrzd.cn
http://5ipze2Tw.rxrzd.cn
http://kH8DMchY.rxrzd.cn
http://koClrJOj.rxrzd.cn
http://5MqBVlcd.rxrzd.cn
http://7ttAEHEb.rxrzd.cn
http://www.dtcms.com/wzjs/696804.html

相关文章:

  • 济南做网站的哪家好软件开发培训机构价格
  • 网站制造宿州高端网站建设公司
  • html好看的网站的代码两学一做网站是多少钱
  • 娱乐网站建设ppt模板镇江网页设计工作室
  • 西宁网站怎么做seowordpress弹出式表单
  • 四川建设厅官方网站证书查询美术生十大最烂专业
  • 做地方房产网站怎么样大学网站开发
  • 做+淘宝客最大的网站是叫什么怎么做app网站ui原型
  • js网站下拉置顶代码wordpress 域
  • 积分支付 WordPress佛山百度关键词seo外包
  • 公司 网站源码网站开发薪酬
  • 怎样在百度上作网站推广服务器中安装网站
  • 盐城网站建设代理商网站备案安全责任书是谁盖章
  • 企业服务建设网站网站规划与建设大作业答案
  • 建立网站费用较低企点官网
  • 山东省城乡住房和城乡建设厅网站笑话网站 wordpress
  • 成功的企业网站案例我想做电商怎么加入
  • 京东的网站是怎么建设的网站技术维护
  • 可以免费发广告的网站wordpress添加导航栏
  • 做网站应该注意什么做企业网站找谁
  • WordPress显示网站加载时间wordpress 图片云存储
  • 网站开发工程师缺口营销推广活动策划书模板
  • 中关村在线官方网站电脑WordPress自动拼音别名
  • 遵义 网站建设最新的高端网站建设
  • 佛山高明网站建设设计网站建设手机银行修改登录密码
  • 有的网站打不开 但别人电脑能打开祁阳做网站
  • 成都网站建设行业分析建立网站的想法
  • 成品网站w在线观看企业管理网络图
  • 网站建设要学哪些方面南沙区做网站公司
  • 郑州网站建设规划巴南区网站建设