当前位置: 首页 > article >正文

慕慕手记项目日记 2025-3-7 项目基本环境搭建

慕慕手记项目日记 2025-3-7

今日的日记主要是对SQLAIChemy框架应用的一些收尾,当然主要还是先学会使用。

我的收藏文章功能开发

@app.route("/")
def my_favorite():
    username = request.args.get("username")
    #先查询收藏表里的user_id 再查询文章表,实现多表查询
    all_article = db_session.query(User, Article, Favorite).outerjoin(
        Favorite, User.user_id == Favorite.user_id
    ).outerjoin(
        Article, Article.id == Favorite.article_id
    ).filter(
        User.username == username
    ).all()
    for user, article, favorite in all_article:
        print(user.username)
        print(article.title)
        print(favorite.id)
    return "ok"
  • db_session.query(User, Article, Favorite):创建一个查询对象,准备同时查询 UserArticleFavorite 表。
  • .outerjoin(Favorite, User.user_id == Favorite.user_id):使用外连接(outerjoin)将 User 表和 Favorite 表关联起来,条件是 User.user_id 等于 Favorite.user_id
  • .outerjoin(Article, Article.id == Favorite.article_id):再次使用外连接将 Article 表和 Favorite 表关联起来,条件是 Article.id 等于 Favorite.article_id
  • .filter(User.username == username):添加过滤条件,只选择那些 username 与传入参数匹配的记录。
  • .all():执行查询并返回所有符合条件的记录

查询文章内容开发

主要用到了flask框架中的or_函数还有like函数,

@app.route("/")
def search_article():
    keyword = request.args.get("keyword")

    # 查询数据库,查找标题或内容包含关键字的文章
    result = db_session.query(Article).filter(
        or_(
            Article.title.like("%" + keyword + "%"),
            Article.article_content.like("%" + keyword + "%")
        )
    ).all()

    # 打印结果中的文章标题
    for r in result:
        print(r.title)

    return "ok"    
  • or_():SQLAlchemy的逻辑“或”操作,满足任意条件即可。
  • like("%" + keyword + "%"):模糊匹配,%是通配符,表示“包含关键字”

SQLAIChemy与json数据响应

通常后端应用需要传输json数据给前端页面进行动态渲染,现在我们来模拟这个过程。

@app.route("/")
def search_article():
    keyword = request.args.get("keyword")

    # 查询数据库,查找标题或内容包含关键字的文章
    result = db_session.query(Article).filter(
        or_(
            Article.title.like("%" + keyword + "%"),
            Article.article_content.like("%" + keyword + "%")
        )
    ).all()

    # 打印结果中的文章标题
    page_data = model_list(result)
    return page_data
    # username = request.args.get("username")
    # #先查询收藏表里的user_id 再查询文章表,实现多表查询
    # all_article = db_session.query(User, Article, Favorite).outerjoin(
    #     Favorite, User.user_id == Favorite.user_id
    # ).outerjoin(
    #     Article, Article.id == Favorite.article_id
    # ).filter(
    #     User.username == username
    # ).all()
    # for user, article, favorite in all_article:
    #     print(user.username)
    #     print(article.title)
    #     print(favorite.id)
    # return "ok"

def model_list(result):
    page_list = []
    result_json = {}
    for r in result:
        for k,v in r.__dict__.items():
            if k != "_sa_instance_state":
                result_json[k] = v

    page_list.append(result_json)
    return page_list


if __name__ == '__main__':
    app.run()  # 添加debug模式方便调试

慕慕手记项目环境搭建

在搭建环境之前需要安装以下软件:

  • git
  • python 虚拟环境

接下来是git的配置过程

首先先到gitee里面添加ssh公钥:生成/添加SSH公钥 - Gitee.com

然后到pycharm里面创建一个项目,仍然是我们之前创建的虚拟环境,下面是我们当然的目录结构展示:

在这里插入图片描述

先创建这些文件,再到gitee中创建一个空的仓库,然后初始化git

git config --global user.name 'Invalid' 
git config --global user.email '3238846019@qq.com'

添加远程仓库:

git remote add origin https://github.com/your/your.git

现在已经有了这些基本的代码就可以试着提交了

git add .
git commit -m "init"
git push -u origin master

http://www.kler.cn/a/576129.html

相关文章:

  • 如何用FFmpeg高效拉流(避坑指南)
  • 捣鼓180天,我写了一个相册小程序
  • Zypher Network :基于零知识证明方案为 AI 赋予可信框架
  • leetcode麻烦又易忘记题目
  • Python Flask框架学习汇编
  • ReferenceError: assignment to undeclared variable xxx
  • C/C++基础知识复习(50)
  • 九、Redis 并发控制:单线程原理与 Pipeline 批量优化
  • 部署Nagios Core服務器安裝好了部署了aapenal 作為網頁服務器設定了防火墻可視化的軟件來每日監測服務器的狀況.
  • 计算机毕业设计SpringBoot+Vue.js周边游平台(源码+文档+PPT+讲解)
  • createrepo centos通过nginx搭建本地源
  • 实现NTLM relay攻击工具的Python代码示例
  • TensorFlow的pb模型
  • 如何在PHP爬虫中处理异常情况的详细指南
  • Python基于Django的图书馆管理系统【附源码、文档说明】
  • SpringMVC 的配置及拦截器
  • 推荐一个基于Koin, Ktor Paging等组件的KMM Compose Multiplatform项目
  • macOS常用网络管理配置命令
  • ReAct论文阅读笔记总结
  • android13打基础: timepicker控件