慕慕手记项目日记 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)
:创建一个查询对象,准备同时查询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] = 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