慕慕手记项目日记 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)
:创建一个查询对象,准备同时查询User
、Article
和Favorite
表。.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] = vpage_list.append(result_json)return page_listif __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