如何将SQL中的MEDIUMBLOB内容显示到HTML页面?现有代码无输出
问题分析与修复方案
你的代码存在几个关键问题,导致iframe显示空白:
- 请求方式不匹配:iframe通过GET请求访问
/text,但代码里判断'name' in request.form(这是POST请求的参数逻辑),GET请求下这个条件永远不成立,自然没有内容返回。 - 数据库数据获取逻辑错误:
cursor.execute()返回的是查询影响的行数,不是实际查询结果,你用open()去打开这个数字完全是逻辑错误,应该用cursor.fetchone()获取单条查询结果。 - 没有输出数据:就算拿到了BLOB数据,你的generate函数也没有把数据输出出去,需要通过
yield返回内容。
修正后的代码
main.py
@app.route("/text") def text(): def generate(): # GET请求用request.args获取参数 name = request.args.get('name') if name: cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor) cursor.execute("SELECT transcript from `movies` WHERE movie_name = %s", [name]) # 获取单条查询结果 result = cursor.fetchone() if result: # 直接返回MEDIUMBLOB存储的内容 yield result['transcript'] return app.response_class(generate(), mimetype='text/plain')
view.html
需要给iframe的src带上name参数(示例里直接指定,实际可根据业务逻辑动态生成):
<div class="top"> <h1>APPLES</h1> </div> {% block content %} <div class="scontainer"> <div id="list"> <!-- 替换成实际的电影名称 --> <iframe src="/text?name=你的电影名" height="400" width="600"></iframe> </div> </div> {% endblock %} </body> </html>
额外说明
如果你的MEDIUMBLOB存储的是HTML内容,把mimetype='text/plain'改成mimetype='text/html',iframe就能正确解析格式了。
内容的提问来源于stack exchange,提问作者Ehds
相关产品推荐
相关产品推荐

