You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python新手:Flask构建CRUD应用时如何用pymysql按字典格式取值?

Flask + PyMySQL 获取键值对格式查询结果指南

嘿,作为Python和Flask的新手能上手CRUD应用已经超棒啦!关于你问的用PyMySQL拿到{"property-name": "value"}格式的查询结果,其实你已经在代码里找对方向了,我来帮你把细节捋顺~

首先修正一个关键配置错误

你当前的数据库连接里,cursorclass写的是字符串'pymysql.cursors.DictCursor',这会导致DictCursor不生效!必须改成类对象(去掉引号),这是让查询结果返回字典的基础:

connection = pymysql.connect(
    host='localhost',
    db='mydb',
    user='root',
    password='password',
    cursorclass=pymysql.cursors.DictCursor  # 去掉引号,用类本身
)

然后获取你想要的字典格式结果

当连接配置了DictCursor后,创建的游标会自动把查询结果映射为字典(键是数据库列名,值是对应字段内容),分两种场景:

  • 单条结果(比如登录查询):用cursor.fetchone(),直接返回一个字典
  • 多条结果:用cursor.fetchall(),返回一个字典列表,每个元素是一条记录的字典

修改后的完整代码示例

我还给你补上了漏写的Flask app实例化(这个必须有,不然路由会报错),以及更规范的写法:

from flask import Flask, request
import pymysql.cursors

# 必须先实例化Flask应用
app = Flask(__name__)

# 修正后的数据库连接
connection = pymysql.connect(
    host='localhost',
    db='mydb',
    user='root',
    password='password',
    cursorclass=pymysql.cursors.DictCursor
)

@app.route('/login', methods=['POST'])
def login():
    # 用上下文管理器自动管理游标,避免资源泄漏
    with connection.cursor() as cursor:
        # 注意:单参数也要加逗号,确保是元组格式
        cursor.execute(
            "SELECT id, hash, displayName, attempt, status FROM users WHERE id=%s",
            (request.form['username'],)
        )
        # 获取单条用户记录,直接就是{"id": xxx, "hash": xxx,...}的格式
        user = cursor.fetchone()
    
    if user:
        # 可以直接通过键名访问字段值
        print(f"找到用户:{user['displayName']}")
        # 这里写你的登录验证逻辑(比如校验密码hash)
        return "登录成功"
    else:
        return "用户不存在"

额外小提醒

  • 用with上下文管理器创建游标,会自动帮你关闭游标,比手动调用cursor.close()更安全
  • 始终保持参数化查询的写法,不要直接拼接SQL字符串,能有效防止SQL注入
  • 如果后续需要修改数据,记得调用connection.commit()提交事务哦

内容的提问来源于stack exchange,提问作者starleaf1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 02:24:21