需要的所有操作和检视数据的基础功能
可以把session看作保存对数据库的改动的地方。
user=User(usernmae='fake_name')
db.session.add(user)
db.session.commit()
------------------
users=User.query.all()
users
-----------------
users=User.query.limit(10).all()
users=User.query.order_by(User.username).all()
Users=User.query.order_by(User.username.desc()).all()
-----------
user=User.query.first()
user.username
--------------
user=User.query.get(1)
user.username
-------
这些函数都是可以链式调用的 也就是说
-------
users=User.query.order_by(
User.username.desc()
).limit(10).first()
-----------
MBTI
------------
pagination(分页)
可以可以用来替代first() all() 专门用来设计用来实现分页功能的 大多数网站都会用 分页的方式来展示长列表
返回的是pagination对象 而不是数据模型对象的 列表
比如我们想得到前10个虚构的 Post对象
Post.query.pagination(1,10)
page=User.query.pagination(1,10)
返回这一页包含的数据对象
page.items
返回这一页的页数
page.pages
返回总页数
上一页和下一页是否有对象可以显示
page.has_prev,page.has_next
------------------
返回上一页和下一页的pagintation对象
如果不存在的话返回当前页
page.prev()
page.next()
-----------
条件查询
----------
SQL最擅长的东西 就是根据一些条件的集合 获得过滤后的数据
要得到 满足一系列条件的数据列表
query.filter_by过滤器
------
users=Users.query.filter_by(username='fake_name').all()
----------
users=Users.query.order_by(User.username.desc())
.filter_by(username='fake_name')
.limit(2)
.all()
----------
user=User.query.filter(
User.id>1
).all()
--------
整数 integers 字符串 strings
日期 dates
整数integer 浮点float
日期date
SQL in or not的操作
------
修改数据
使用first() all()
等方法返回数据之前 调用update方法可以修改已存在数据的值
User.query.filter_by(username='fake_name').update(
{'password':'test'
}
)
#对数据模型的修改已被自动加入session()中
db.session.commit()
----------
删除数据
从数据库中删除一行数据
------------
不要太认真嘛
-----------
user=User.query.filter_by(
username='fake_ame'
).first()
db.session.delete(user)
db.session.commit()
---------------------
数据模型之间的关联
--------------
模型之间可以互相建立引用
每篇文章都有一个特定的作者
通过把每个作者的文章跟这个作者相关联
方便地获取这个作者的所有文章 一对多关系的一个范例-
-------------
lazy=