zoukankan      html  css  js  c++  java
  • flask-SQLAlchemy笔记

    SqlAlchemy ORM
    新建模型
    models.py
    import os

    #设置数据库URI
    app.config['SQLALCHEMY_DATABASE_URI']=os.getenv('DATABASE_URL','mysql+pymysql://root:000000@localhost:3306/test')

    db = SQLAlchemy(app)


    安装并初始化Flask-SQLAlchemy后,启动程序时会看到命令行下有
    一行警告信息。这是因为Flask-SQLAlchemy建议你设置
    SQLALCHEMY_TRACK_MODIFICATIONS配置变量,这个配置变量决
    定是否追踪对象的修改,这用于Flask-SQLAlchemy的事件通知系统。这
    个配置键的默认值为None,如果没有特殊需要,我们可以把它设为
    False来关闭警告信息:

    class Note(db.Model):#创建一个模型类
    id = db.Column(db.Integer,primary_key=True)
    body = db.Column(db.Text)
    db.create_all()#创建一个表
    db.drop_all()#删除一个表

    字段属性:
    Integer 整数
    String 字符串,可选参数length来设置长度
    Text 较长的Unicode文本
    Date 日期,存储python的datetime.date对象
    Time 时间,存储python的datetime.time对象
    Datetime 日期和时间,存储python的datetime对象
    Interval 时间间隔,存储python的datetime.timedelta对象
    Float 浮点数
    Boolean 布尔值
    PickleType 存储Pickle列化的Python对象
    LargeBinary 存储任意二进制数据
    注意:
    一般情况下字段的长度有程序设计者自定的,但是姓名的长度一般不超过70个字符,中文名一般不超过20个字符,电子邮件地址的长度一般不超过254个字符,

    常用的SQLAlchemy字段参数:

    primary_key ,True代表该字段为主见==主键
    unique,True代表不允许出现重复值
    index,True代表为该字段创建索引,以提高查询效率
    nullable,确定字段值可否为空,值为True或False,默认True
    default,为字段设置默认值


    创建数据库和表

    db.create_all()#创建表
    db.drop_all()#删除数据库和表
    db.session.add()#增加记录
    db.session.commit()#提交会话


    CRUD:
    Flask-SqlAlchemy>=2.30版本的话自动为模型类生成一个__repr__(),__repr__()方法会返回一条类似
    <模型类名主键值>的字符串,比如<Note2>

    class Note(db.Model):
    ...
    def __repr__(self):
    return '<Note %r>' % self.body


    <模型类>.query.<过滤方法>.<查询方法>

    常用的SqlAlchemy查询方法

    all()返回所有查询到的记录
    first()返回查询的第一条记录,如果未找到,则返回None
    one()返回第一条记录,且仅允许有一条记录,如果记录大于1或者小于1,则抛出错误。

    get(ident)传入主键作为参数,返回指定主键值的记录,如果想未找到,则返回None
    count()返回查询结果的数量
    one_or_none()类似one(),结果数量不为1,返回None
    first_or_404()返回查询的第一条记录,如果未找到,则返回404错误响应
    get_or_404(ident) 传入主键作为参数,返回指定主键值的记录,如果未找到,则返回404错误响应
    paginate() 返回一个Pagination对象,可以对记录进行分页处理。
    with_parent(instance)传入模型示例作为参数,返回和这个示例相关联的对象


    Note.query.all()
    note1 = Note.query.first() #返回第一条记录
    note1.body #返回body字段的内容
    Note.query.get(2)#返回主键值id字段的记录
    Note.query.count()#返回记录的对象

    常用的SQLAlchemy过滤方法
    filter() 使用指定的规则过滤记录,返回新的查询对象。
    filter_by()使用指定的规则过滤记录(以关键字表达的形式),返回新产生的查询对象#类似where
    order_by()根据条件对记录进行排序,返回产生的新的查询对象
    limit(limit)使用指定的值限制原查询返回的记录数量,返回新产生的查询对象
    group_by()根据指定条件对记录进行分组,返回新产生的查询对象。
    offset(offset) 使用指定的值偏移元查询的结果,返回产生新的查询对象。

    filter()方法是最基础的查询方法,他使用指定的规则过滤记录,
    它和filter_by()的差别在于它内部需要写 类名.字段值,而filter_by只写字段值就好了。
    Note.query.filter(Note.body="shave").first()
    Note.query.filter_by(body="shave")

    查看对应的Sql语句则直接打印即可。

  • 相关阅读:
    沟通的5个步骤
    安家博客园,发表感想
    postman 简单教程-实现简单的接口测试
    Postman的基本使用
    面试题-如何测试一个APP
    Fiddler快捷方式导出jmeter脚本,傻瓜式
    Servlet学习(三)
    scala学习(一)
    白底抠图
    Servlet学习(二)
  • 原文地址:https://www.cnblogs.com/wxzbk/p/10508272.html
Copyright © 2011-2022 走看看