须要的全部操做和检视数据的基础功能数据库
能够把session看做保存对数据库的改动的地方。session
user=User(usernmae='fake_name')函数
db.session.add(user)网站
db.session.commit()设计
------------------对象
users=User.query.all()字符串
usersget
-----------------string
users=User.query.limit(10).all()it
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=