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
相关产品推荐
相关产品推荐

