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

如何在Python Flask网页应用中显示SQLite3数据库中的图片

解决Flask从SQLite BLOB显示图片的问题

核心问题分析

原代码存在几个关键问题:

  • Image函数未返回查询到的图片数据
  • 数据库连接关闭语句conn3.close缺少括号,未实际执行
  • SQLite的BLOB图片不能直接作为img标签的src值,需要转换为浏览器可识别的格式

修正后的完整代码

app.py 修改版

from flask import Flask, render_template, request
import sqlite3
import base64

app = Flask(__name__)

def get_image_blob(search_name):
    # 连接数据库并查询对应名称的图片BLOB
    conn = sqlite3.connect('<你的数据库路径>')
    conn.row_factory = sqlite3.Row
    cursor = conn.cursor()
    # 模糊搜索:若需精确匹配,可将SQL改为"SELECT Image FROM Images WHERE Name = ?",参数传(search_name,)
    cursor.execute("SELECT Image FROM Images WHERE Name LIKE ?", (f"%{search_name}%",))
    result = cursor.fetchone()
    conn.close()  # 执行连接关闭操作
    return result['Image'] if result else None

@app.route('/display', methods = ["GET", "POST"])
def display():
    image_data = None
    if request.method == "POST":
        search_name = request.form.get("search")
        blob = get_image_blob(search_name)
        if blob:
            # 将BLOB转换为base64编码的Data URI,供img标签直接调用
            image_data = f"data:image/png;base64,{base64.b64encode(blob).decode('utf-8')}"
    return render_template('display.html', image=image_data)

display.html 修改版

<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">

<form method="post">
  <label for="search">区分大小写搜索</label>
  <br>
  <input type="text" name="search" required>
  <input type="submit" value="搜索">
  <br><br>
</form>

{% if image %}
  <img src="{{ image }}" alt="搜索到的图片">
{% else %}
  <div id="picture">未找到图片</div>
{% endif %}

关键改动说明

  1. 函数功能明确化:将原Image函数重命名为get_image_blob,明确其获取图片BLOB的作用,并返回查询结果或None
  2. 数据库连接修复:补全conn.close()括号,确保数据库连接被正确关闭
  3. BLOB格式转换:把SQLite存储的PNG BLOB转换为base64编码的Data URI,让浏览器能直接识别并显示
  4. 模板逻辑简化:将原长度判断改为直接检查image是否存在,逻辑更简洁准确

额外建议

  • 替换数据库路径:将代码中的<你的数据库路径>改为实际SQLite文件路径(如'images.db')
  • 搜索模式调整:若不需要模糊搜索,修改SQL语句和参数,实现精确匹配
  • 异常处理补充:可添加数据库连接异常捕获,避免程序因连接失败直接崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 12:28:30