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

如何让Python SQLAlchemy生成的SQLite数据库文件可作为文本正常读取

问题核心原因

你看到的乱码是正常现象:SQLite 是二进制存储的数据库文件,不是纯文本格式,文件中除了少量可读的表结构、字符串数据外,还包含大量索引、数据块标识、数值类型的二进制存储内容,直接用普通文本编辑器打开本来就无法完全识别,和你使用 SQLAlchemy 的编码配置没有关系。

正确读取数据库内容的方案
  • 使用专门的 SQLite 管理工具
    直接安装 SQLiteStudio、DB Browser for SQLite 这类免费开源的 SQLite 可视化工具,直接导入你的 medicine-app.db 文件,就可以清晰查看所有表结构、存储的全量数据,也可以直接执行 SQL 语句查询。
  • 用代码导出为可读的纯文本/表格文件
    你可以写一段简单的脚本,直接把数据库里的数据导出为 CSV 格式,导出后的文件可以直接用文本编辑器、Excel 打开读取,示例代码如下:
import csv
from yourapp import db, Post # 把yourapp替换为你上述Flask代码对应的文件名

# 读取所有数据
posts = Post.query.order_by(Post.id).all()

# 导出为CSV
with open("post_export.csv", "w", encoding="utf-8", newline="") as f:
    writer = csv.writer(f)
    # 写入表头
    writer.writerow(["ID", "标题", "详情", "截止时间"])
    # 写入数据
    for post in posts:
        writer.writerow([
            post.id,
            post.title,
            post.detail,
            post.due.strftime("%Y-%m-%d %H:%M:%S")
        ])
额外提示:你现有代码的BUG

你当前的更新路由存在两处错误,会导致更新功能无法正常运行:

  1. 没有接收表单提交的due参数:request.form.get('due') 没有赋值给变量
  2. 日期转换逻辑写错:post.due = datetime.strftime, '%Y-%m-%d' 是错误语法,需要修改为:
due = request.form.get('due')
post.due = datetime.strptime(due, '%Y-%m-%d')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:45:04