标签导航:

flask如何从mysql数据库读取并返回图片?

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接口返回给前端,前端可以使用Flask如何从MySQL数据库读取并返回图片?标签显示该图片。 请确保你的MySQL数据库已正确配置,并且image字段的类型为BLOB。 根据图片的实际类型,调整mimetype参数(例如image/png)。