栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Flask

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Flask

ORM与Flask-SQLAlchemy扩展

# ORM优势与缺点
    # 优势:
    	(1).让开发人员专注于写代码,不用于考虑运维的事情
        (2).省去自己拼写SQL,保证SQL语法的正确性
        (3).一次编写可以适配多个数据库
        (4).防止注入攻击
        (5).在数据库表名或字段名发生变化时,只需修改模型类的映射,无需修改数据库操作的代码
    # 缺点:
        执行效率低下

连接数据库:

class Config(object):
    SQLALCHEMY_DATABASE_URI = 'mysql://root:admin123@127.0.0.1:3306/jiyunstus'
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    SQLALCHEMY_ECHO = True

app.config.from_object(Config)

创建表

# 编写模型类
class User(db.Model):
    id = db.Column(db.Integer,comment='主键ID',primary_key=True,autoincrement=True)
    name=db.Column(db.String(64),comment='用户名')
    age=db.Column(db.Integer,comment='年龄')

数据库迁移命令

python manage.py db init

python manage.py db migrate

python manage.py db upgrade

查询数据

        # 查询全部
        # user_all=User.query.all()

        # 查询单个  id
        # user_info=User.query.get(2)

        # 查询单个  字段
        # user_info=User.query.filter(User.name=='张三').first()

        # 查询多个相同  字段
        # user_all=User.query.filter(User.name=='张三').first()

        # user_all=User.query.filter(User.id==2).all
        # user_all = User.query.filter(User.id == 2).first()

        # user_all = User.query.filter_by(username = 'name').first()

        ########### filter()实现的条件查询
            User.query.filter(User.username=='name').first()

        ########## filter_by()实现的条件查询
            User.query.filter_by(username="name").first()

        # ------分页
        # user_all=User.query.limit(2).offset(4).all

        # -----排序
        # user_all=User.qyery.order_by(User.age.desc()).all()

        # 或者
        # user_all=User.query.filter(or_(User.name=='aa',User.name=='bb')).all()

        # 并且
        # user_all = User.query.filter(and_(User.name == 'aa', User.age == '18')).all()

        # 不是
        user_all = User.query.filter(not_(User.name == 'aa')).all()

        # -----比较

        # 小于 lt
        user_all=User.query.filter(User.age.__lt__(20)).all()

        # 小于等于  le
        user_all = User.query.filter(User.age.__le__(20)).all()

        # 大于  gt
        user_all = User.query.filter(User.age.__gt__(20)).all()

        # 大于等于  ge
        user_all = User.query.filter(User.age.__ge__(20)).all()

        # 在、、之内
        user_all = User.query.filter(User.age.in_((10,20,30))).all()

        # 模糊查询
        user_all = User.query.filter(User.age.like('%王%')).all()

        # 个数
        rs=db.session.query(func.count(User.id)).first()[0]

        # 和
        rs = db.session.query(func.sum(User.age)).first()[0]

        # 平均数
        rs = db.session.query(func.avg(User.age)).first()[0]

        # 最大值
        rs = db.session.query(func.max(User.age)).first()[0]

修改数据

        req=reqparse.RequestParser()

        req.add_argument('name',type=str,required=True)
        req.add_argument('age', type=int, required=True)

        # 校验并解析
        args=req.parse_args()

        # rs = User.query.filter(User.id == args['id']).update({
        #     'name':args['name'],
        #     'age':args['age']
        # })

        rs = User.query.filter(User.id == args['id']).update(args)

        # 提交事务
        db.session.commit()

删除数据

        req = reqparse.RequestParser()

        req.add_argument('id', type=int, required=True)

        args = req.parse_args()

        rs = User.query.filter(User.id == args['id']).update()

        # 提交事务
        db.session.commit()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/987347.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号