Flutter + FastAPI 30天速成计划自用并实践-第7天

Day 7 详细学习计划:内容导入脚本开发

学习目标

  • 创建批量内容导入脚本
  • 学习自动化内容管理
  • 完善后端功能

好,在day6的基础上添加一个脚本,然后运行这个脚本就能将学习记录导入到数据库中了

创建一个advanced_import.py脚本,这个脚本可以将markdown文件,导入到数据库中,在fastapi接口中可以用get方法查看到

python 复制代码
import argparse
from datetime import datetime
from sqlmodel import Session
from database import engine, create_db_and_tables
from models.article import Article

def import_articles(file_path: str, clear_existing: bool = False):
    """导入文章的通用函数"""
    # 创建数据库表
    create_db_and_tables()
    
    # 读取Markdown文件
    with open(file_path, 'r', encoding='utf-8') as f:
        content = f.read()
    
    # 解析Markdown文件获取标题
    lines = content.split('\n')
    title = "默认标题"
    for line in lines:
        if line.startswith('# '):
            title = line[2:]  # 移除 "# " 前缀
            break
    
    # 使用文件名(不含扩展名)作为备选标题
    if title == "默认标题":
        import os
        title = os.path.splitext(os.path.basename(file_path))[0]
    
    # 导入文章
    with Session(engine) as session:
        # 如果需要清除现有数据
        if clear_existing:
            # 删除所有现有文章
            articles = session.query(Article).all()
            for article in articles:
                session.delete(article)
            session.commit()
            print("已清除现有文章")
        
        # 创建新文章对象
        article = Article(
            title=title,
            content=content,
            created_at=datetime.now()
        )
        
        # 添加到数据库
        session.add(article)
        session.commit()
        session.refresh(article)
        print(f"成功导入文章: {article.title}")

def main():
    parser = argparse.ArgumentParser(description='导入文章到数据库')
    parser.add_argument('file', help='要导入的Markdown文件路径')
    parser.add_argument('--clear', action='store_true', help='导入前清除现有数据')
    
    args = parser.parse_args()
    
    import_articles(args.file, args.clear)

if __name__ == "__main__":
    # 为了测试方便,可以暂时使用固定路径
    import_articles('./第七天的内容.md', True)
    # main()  # 正常情况下使用命令行参数

上面我测试了下将第七天的内容md文件导入到数据库中

使用get请求访问接口,就可以看到导入的md文件内容了
http://127.0.0.1:8000/api/v1/articles/

在浏览器中直接输入网址也可以,默认浏览器是识别的get方法,所以可以访问

结果就是
[{"title":"Day 7 详细学习计划:内容导入脚本开发","content":"# Day 7 详细学习计划:内容导入脚本开发......

到今天后端就先这样了,明天开始学习flutter,

相关推荐
ujainu7 小时前
Flutter + OpenHarmony 游戏开发进阶:用户输入响应——GestureDetector 实现点击发射
flutter·游戏·openharmony
hudawei9967 小时前
TweenAnimationBuilder和AnimatedBuilder两种动画的比较
flutter·ui·动画·tweenanimation·animatedbuilder
ujainu7 小时前
Flutter + OpenHarmony 实现无限跑酷游戏开发实战—— 对象池化、性能优化与流畅控制
flutter·游戏·性能优化·openharmony·endless runner
ZH15455891318 小时前
Flutter for OpenHarmony Python学习助手实战:自动化脚本开发的实现
python·学习·flutter
晚烛10 小时前
CANN + 物理信息神经网络(PINNs):求解偏微分方程的新范式
javascript·人工智能·flutter·html·零售
一起养小猫10 小时前
Flutter for OpenHarmony 实战:扫雷游戏完整开发指南
flutter·harmonyos
晚烛10 小时前
CANN 赋能智慧医疗:构建合规、高效、可靠的医学影像 AI 推理系统
人工智能·flutter·零售
晚霞的不甘11 小时前
揭秘 CANN 内存管理:如何让大模型在小设备上“轻装上阵”?
前端·数据库·经验分享·flutter·3d
小哥Mark12 小时前
Flutter开发鸿蒙年味 + 实用实战应用|绿色烟花:电子烟花 + 手持烟花
flutter·华为·harmonyos
一只大侠的侠14 小时前
Flutter开源鸿蒙跨平台训练营 Day 3
flutter·开源·harmonyos