ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

flask之数据库(2)

2022-05-10 16:34:06  阅读:161  来源: 互联网

标签:返回 name flask 数据库 db 查询 book Books


单表操作

@app.route("/add_book")
def add_book():
    ro1 = Books(name='三国演义')#增加Books中name为三国演义的数据
    db.session.add(ro1)#增加
    db.session.commit()#提交
    return "添加成功"

 

@app.route("/del_book")
def del_book():
    rol = Books.query.filter_by(name="水浒传").first()#删除Books中name为水浒传的数据,其中query固定写法,first第一个
    db.session.delete(rol)#删除
    db.session.commit()#提交
    return "删除成功"

 

@app.route("/alter_book")
def alter_book():
    rol = Books.query.filter_by(name="三国演义").first()#与删除大致相同
    rol.name = "射雕英雄传"#更改内容
    db.session.commit()#提交
    return "修改成功"

 

SQLAlchemy中关于查询分为两部分:一个是查询过滤器,一个是查询执行器。

过滤器

过滤器说明
filter() 把过滤器添加到原查询上,返回一个新查询
filter_by() 把等值过滤器添加到原查询上,返回一个新查询
limit 使用指定的值限定原查询返回的结果
offset() 偏移原查询返回的结果,返回一个新查询
order_by() 根据指定条件对原查询结果进行排序,返回一个新查询
group_by() 根据指定条件对原查询结果进行分组,返回一个新查询

执行器

方法说明
all() 以列表形式返回查询的所有结果
first() 返回查询的第一个结果,如果未查到,返回None
first_or_404() 返回查询的第一个结果,如果未查到,返回404
get() 返回指定主键对应的行,如不存在,返回None
get_or_404() 返回指定主键对应的行,如不存在,返回404
count() 返回查询结果的数量
paginate() 返回一个Paginate对象,它包含指定范围内的结果

 

一对多表

在多的一方创建一个字段指向另一个表中的唯一标识(id),外键

增删与单表操作大致相同

查询数据

@app.route("/select_book")
def select_book():
    # 目标:查询南方出版社出版的书籍
    res = Publishers.query.filter(Publishers.name == "南方出版社").first()
    rols = Books.query.filter(Books.publish_id == res.id).all()
    print(rols)
    return "查询成功"

简:在表中设置字段时添加一个内容(红色),操作方法变简

class Publishers(db.Model):
    __tablename__ = 'publishers'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64))
    city = db.Column(db.String(64))
    to_book = db.relationship("Books")

    def __repr__(self):
        return 'User:%s' % self.name

@app.route("/select_book")
def select_book():
    # 目标:查询南方出版社出版的书籍
    res = Publishers.query.filter(Publishers.name == "南方出版社").first().to_book
    print(res)
    return "查询成功"

 

标签:返回,name,flask,数据库,db,查询,book,Books
来源: https://www.cnblogs.com/zx77/p/16254053.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有