Flask应用:从MySQL数据库获取并显示图片
本文介绍如何构建一个Flask接口,从MySQL数据库读取图片数据,并在前端展示。
问题描述:
如何使用Flask框架从MySQL数据库中读取图片数据,并将其以图片格式返回给前端?
代码示例及解决方案:
数据库连接和图片读取(假设数据库名为mydatabase,表名为my_table,图片字段名为image,id为1):
import mysql.connector from flask import Flask, send_file app = Flask(__name__) mydb = mysql.connector.connect( host="localhost", user="root", password="password", database="mydatabase" ) mycursor = mydb.cursor() mycursor.execute("SELECT image FROM my_table WHERE id = 1") image_data = mycursor.fetchone()[0] mydb.close() @app.route('/get_image') def get_image(): return send_file(io.BytesIO(image_data), mimetype='image/jpeg') if __name__ == '__main__': app.run(debug=True)
关键改进:
- 使用io.BytesIO: 将二进制图片数据包装成一个可供send_file函数处理的类文件对象。这避免了直接将二进制数据传递给send_file可能造成的错误。 需要导入io模块:import io
- 关闭数据库连接: 在读取完图片数据后,显式地关闭数据库连接(mydb.close()),这是良好的数据库操作习惯。
- 更清晰的代码结构: 将数据库连接和图片读取部分与Flask路由处理部分分开,使代码更易于理解和维护。
- 错误处理 (可选): 可以添加错误处理机制,例如处理数据库连接失败或查询结果为空的情况。
这个改进后的代码能够正确地从MySQL数据库读取图片,并通过Flask接口返回给前端,前端可以使用标签显示该图片。 请确保你的MySQL数据库已正确配置,并且image字段的类型为BLOB。 根据图片的实际类型,调整mimetype参数(例如image/png)。