Python全栈 Web(Flask框架、CRUD、聚合分组)

简介: Flask、Python、Django、框架、服务器、客户端、浏览器、交互、WEB、Python前端、CSS、JAVA、HTML、H5、PHP、JavaScript、JQuery、分布式开发

模型:
 
# 根据现有的表结构构建模型类
class Users(db.Model):
    __tablename__ = "users"
    id = db.Column(db.Integer,primary_key=True)
    username = db.Column(db.String(80),unique=True)
    age = db.Column(db.Integer)
    email = db.Column(db.String(120),unique=True)

    def __init__(self,username,age,email):
        self.username = username
        self.age = age
        self.email = email

    def __repr__(self):
        return "<Users %r>" % self.username


插入
 具体信息在上一篇博客

# 强制删除所有模型对应的表
db.drop_all()
# 将所有模型映射到数据库
db.create_all()

# 向表中插入一条记录
@app.route('/insert')
def insert_views():
    user = Users('Paris',18,'Paris@gmail.com')
    db.session.add(user)
    return "Insert OK"


FlASK-SQLAlchmey  查询:
基于db.session  进行查询
db.session.query()
可以有多个参数,参数表示要查询那个实体
该函数会返回一个query对象  包含了指定实体类对应的表中所有的数据

查询执行函数:
在查询的基础上得到最终想要的结果
语法:
db.session.query(...).查询执行函数
all()
以列表的方式返回查询的所有结果
first()
返回查询结果中的第一个结果 没有返回None
first_or_404()
返回查询第一个结果如果没有终止并返回404
count()
返回查询结果的数量
过滤器函数:
filter()
按照指定条件进行过滤(多表,单表,定值,不定值)
filter_by()
按照等值条件进行过滤
limit()
按照限制行数获取查询结果
order_by()
按照指定条件进行排序
group_by()
根据指定条件进行分组

示例:
查询所有 年龄大于30的信息
db.session.query(Users).filter(Users.age>30).all()
条件必须有模型.属性  来组成
查询所有 年龄大于30或者id大于5的信息
要借助于 or_() 函数
db.session.query(Users).filter(or_(Users.age>30, Users.id>5)).all()
查询所有 年龄大于30并且小于50的信息
db.session.query(Users).filter(Users.age>30, Users.age<50).all()
查询所有  年龄等于30 的信息
db.session.query(Users).filter(Users.id==5).all()
查询所有  username中含有“w”的用户信息
db.session.query(Users).filter(Users.username.like("%w%")).all()
查询所有  id在  1~3之间的user信息
要借助于 in_() 函数
db.session.query(Users).filter(Users.id.in_([1, 2, 3])).all()
查询id=5的信息
db.session.query(Users).filter_by(id=5).first()
获取前5条数据
db.session.query(Users).limit(5).all()
获取从2开始的前5条数据
db.session.query(Users).limit(5).offset(2).all()
对Users表中按照id倒叙排序
db.session.query(Users).order_by("id desc").all()
多级排序逗号隔开
db.session.query(Users).order_by("id desc, age asc").all()
基于Models 进行查询
Models.query.查询过滤器(条件参数).查询执行函数
Users.query.filter(Users.id>3).all()


# 查询路由
@app.route('/query')
def query_views():
    # 测试查询
    print(db.session.query(Users))
    print(db.session.query(Users.username,Users.email))
    print(db.session.query(Users,Course))



    # 通过查询执行函数获得最终查询结果
    # all() : 得到查询中所有的结果
    users = db.session.query(Users).all()
    for u in users:
        print(u.username,u.age,u.email)


    # first() : 得到查询中的第一个结果
    user = db.session.query(Users).first()
    print(user.username,user.age,user.email)
    course = db.session.query(Course).first()
    print(course)



    # 使用查询过滤器函数对数据进行筛选

    # 查询年龄大于30的Users的信息
    users = db.session.query(Users).filter(Users.age>30).all()
    print(users)

    # 查询年龄大于30并且id大于5的Users的信息
    users = db.session.query(Users).filter(Users.age>30,Users.id > 5).all()
    print(users)

    # 查询年龄大于30 或者 id大于 5 的Users的信息
    users = db.session.query(Users).filter(or_(Users.age>30,Users.id > 5)).all()
    print(users)

    # 查询email中包含字符'w'的用户的信息
    users = db.session.query(Users).filter(Users.email.like('%w%')).all()
    print(users)

    # 查询id在1,2,3 之间的 用户的信息
    users = db.session.query(Users).filter(Users.id.in_([1,2,3])).all()
    print(users)

    # 查询 Users 表中所有数据的前3条
    users = db.session.query(Users).limit(3).all()
    users = db.session.query(Users).limit(3).offset(1).all()

    # 查询Users表中所有的数据,并按照id倒叙排序
    users = db.session.query(Users).order_by('id desc,age asc')
    print(users)

    # 查询Users表中所有的数据,并按照 age 进行分组
    users = db.session.query(Users).group_by('id').all()
    print(users)


    # 基于Models实现的查询 : 查询id>3的所有用户的信息
    users = Users.query.filter(Users.id>3).all()
    print(users)
    return "Query OK"




FLASK-SQLAlchemy  删除 和 修改
删除:
1.查询出要删除的实体
user = db.session.query(Users).filter_by(id=5).first()
2.根据所提供的删除方法将信息删除
db.session.delete(user)

@app.route('/delete_user')
def delete_user():
    # 查询并去除id=5的第一条记录
    user = Users.query.filter_by(id=5).first()
    # 将改记录删除
    db.session.delete(user)
    return 'Delete OK'


修改:
1.查
user = Users.query.filter_by(id=1).first()
2.改
user.username = "巴黎"
3.保存
db.session.add(user)

@app.route('/update_user')
def update_user():
    # 查询id=1的第一条记录并取出
    user = Users.query.filter_by(id=1).first()
    # 将username改为巴黎
    user.username = "巴黎"
    # 将年龄改为17
    user.age = 17
    # 将数据重新插入回数据库  如果该数据纯在则更新如果不存在则创建
    db.session.add(user)
    return "Update OK"


FLASK-SQLAlchemy - 关系映射
一对多:
在“多”实体中增加
外键类名 = db.Column(db.Integer, db.ForeignKey(主表.主键))
在“一”的实体中正价反向引用关系
属性名 = db.relationship(“对应的“多”实体类名”, backref="属性名", lazy="dynamic")



class Course(db.Model):
    __tablename__ = "course"
    id = db.Column(db.Integer,primary_key=True)
    cname = db.Column(db.String(30))
    #反向引用:
        # 返回与当前课程相关的teacher列表
    #backref:
        # 定义反向关系,本质上会向Teacher实体中增加一个
        # course属性.该属性可替代course_id来访问
        # Course模型.此时获得到的是模型对象,而不是外键值
    teachers=db.relationship('Teacher',backref='course')

    def __init__(self,cname):
        self.cname = cname

class Teacher(db.Model):
    __tablename__='teacher'
    id = db.Column(db.Integer,primary_key=True)
    tname = db.Column(db.String(30))
    tage = db.Column(db.Integer)

    # 增加一列 : course_id,外键列,要引用自主键表(course)的主键列(id)
    course_id = db.Column(db.Integer,db.ForeignKey('course.id'))

    def __init__(self,tname,tage):
        self.tname = tname
        self.tage = tage

    def __repr__(self):
        return "<Teacher %r>" % self.tname




相关文章
|
13天前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
57 6
|
13天前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
96 44
|
7天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
33 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
1天前
|
关系型数据库 数据库 数据安全/隐私保护
Python Web开发
Python Web开发
14 6
|
6天前
|
开发框架 前端开发 JavaScript
利用Python和Flask构建轻量级Web应用的实战指南
利用Python和Flask构建轻量级Web应用的实战指南
18 2
|
9天前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
21 1
|
5天前
|
安全 API 网络架构
Python中哪个框架最适合做API?
本文介绍了Python生态系统中几个流行的API框架,包括Flask、FastAPI、Django Rest Framework(DRF)、Falcon和Tornado。每个框架都有其独特的优势和适用场景。Flask轻量灵活,适合小型项目;FastAPI高性能且自动生成文档,适合需要高吞吐量的API;DRF功能强大,适合复杂应用;Falcon高性能低延迟,适合快速API开发;Tornado异步非阻塞,适合高并发场景。文章通过示例代码和优缺点分析,帮助开发者根据项目需求选择合适的框架。
20 0
|
8天前
|
Web App开发 测试技术 数据安全/隐私保护
自动化测试的魔法:使用Python进行Web应用测试
【10月更文挑战第32天】本文将带你走进自动化测试的世界,通过Python和Selenium库的力量,展示如何轻松对Web应用进行自动化测试。我们将一起探索编写简单而强大的测试脚本的秘诀,并理解如何利用这些脚本来确保我们的软件质量。无论你是测试新手还是希望提升自动化测试技能的开发者,这篇文章都将为你打开一扇门,让你看到自动化测试不仅可行,而且充满乐趣。
|
3月前
|
搜索推荐 数据可视化 数据挖掘
基于Python flask框架的招聘数据分析推荐系统,有数据推荐和可视化功能
本文介绍了一个基于Python Flask框架的招聘数据分析推荐系统,该系统具备用户登录注册、数据库连接查询、首页推荐、职位与城市分析、公司性质分析、职位需求分析、用户信息管理以及数据可视化等功能,旨在提高求职者的就业效率和满意度,同时为企业提供人才匹配和招聘效果评估手段。
101 0
基于Python flask框架的招聘数据分析推荐系统,有数据推荐和可视化功能
|
1月前
|
JSON 测试技术 数据库
Python的Flask框架
【10月更文挑战第4天】Python的Flask框架

热门文章

最新文章