赞
踩
userinfo = UserInfo(name="老王",age=19)
db.session.add(userinfo)
db.session.commit()
db.session.add_all([
UserInfo(name="老王",age=19),
UserInfo(name="老王",age=19),
UserInfo(name="老王",age=19),
UserInfo(name="老王",age=19)
])
db.session.commit()
data = UserInfo.query.all()
print(data)
for one in data:
print(one.name)
get方法没有数据返回None,不像django一样报错;只能id、查询,并且只能通过id的值查询,或者用ident=1
data = UserInfo.query.get(1)
print(data)
print(data.name)
get只能加id才能查询;不能通过id=1才能查询
可以用ident=1
可以用get查询没有的id如果没有返回None
data = UserInfo.query.filter_by(name='老王').all()
print(data)
data = UserInfo.query.filter(UserInfo.name=='老王').all()
print(data)
data = UserInfo.query.filter(UserInfo.name=='老王').first()
print(data)
升序
data = UserInfo.query.order_by(UserInfo.id).all() # 按照id升序
data = UserInfo.query.order_by("id").all()
降序
data = UserInfo.query.order_by(UserInfo.id.desc()).all() # 按照id降序
data = UserInfo.query.order_by(db.desc("id")).all() # 按照id降序
limit(2) 取两条数据
data = UserInfo.query.limit(2).all()
print(data)
偏移offset() 和分页limit() 的使用方法只有下面这一种:
data = UserInfo.query.offset(2).limit(2).all()
print(data)
而下面这种的写法是错误的
data = UserInfo.query.all().offset(2).limit(2)
>>> Note.query.count()
4
Note.query.filter(Note.body.like(’%Sam%’)).first()
<Note u’remember Sam Xia’>
Note.query.filter(Note.body.in_([‘Rose’,‘Sam’])).first()
<Note u’Rose’>
Note.query.filter(~Note.body.in_([‘foo’])).all()
[<Note u’Hello~’>, <Note u’remember Sam Xia’>, <Note u’Rose’>, <Note u’I AM HERE TO TRUW BUBLEGUM AND KIK ASS, AND NOW I AM ALL OUT OF BUBLEGUM~’>]
from sqlalchemy import and_
Note.query.filter(and_(Note.body == ‘Rose’, Note.id == 3)).all()
[<Note u’Rose’>]
Note.query.filter(Note.body == ‘Rose’, Note.id == 3).all()
[<Note u’Rose’>]
filter()中的等号是两个
Note.query.filter(Note.body == ‘Rose’).filter(Note.id == 3).all()
[<Note u’Rose’>]
注意filter_by()中的等号是一个
Note.query.filter_by(body=‘Rose’).filter_by(id=3).all()
[<Note u’Rose’>]
Note.query.filter(or_(Note.body == ‘Rose’, Note.id == 2)).all()
[<Note u’remember Sam Xia’>, <Note u’Rose’>]
和filter()方法相比,filter_by()方法更易于使用。在filter_by()方法中,可以使用关键字表达式来指定过滤规则。更方便的是,可以在这个过滤器中直接使用字段名称。下面的例使用filter_by()过滤器完成了同样的任务:
Note.query.filter_by(body = ‘Rose’).all()
[<Note u’Rose’>]
参数1:当前是第几页,参数2:每页显示几条记录,参数3:是否要返回错误。
返回的分页对象有三个属性:items:获得查询的结果,pages:获得一共有多少页,page:获得当前页。
需要倒入包才能用的有:from sqlalchemy import *
not_ and_ or_ 还有上面说的排序desc。
常用的内置的有:in_ 表示某个字段在什么范围之中。
endswith():以什么结尾。
startswith():以什么开头。
contains():包含
1. 查询所有用户数据 User.query.all() 2. 查询有多少个用户 User.query.count() 3. 查询第1个用户 User.query.first() 4. 查询id为4的用户[3种方式] User.query.get(4) User.query.filter_by(id=4).first() User.query.filter(User.id==4).first() filter:(类名.属性名==) filter_by:(属性名=) filter_by: 用于查询简单的列名,不支持比较运算符 filter比filter_by的功能更强大,支持比较运算符,支持or_、in_等语法。 5. 查询名字结尾字符为g的所有数据[开始/包含] User.query.filter(User.name.endswith('g')).all() User.query.filter(User.name.contains('g')).all() 6. 查询名字不等于wang的所有数据[2种方式] from sqlalchemy import not_ 注意了啊:逻辑查询的格式:逻辑符_(类属性其他的一些判断) User.query.filter(not_(User.name=='wang')).all() User.query.filter(User.name!='wang').all() 7. 查询名字和邮箱都以 li 开头的所有数据[2种方式] from sqlalchemy import and_ User.query.filter(and_(User.name.startswith('li'), User.email.startswith('li'))).all() User.query.filter(User.name.startswith('li'), User.email.startswith('li')).all() 8. 查询password是 `123456` 或者 `email` 以 `itheima.com` 结尾的所有数据 from sqlalchemy import or_ User.query.filter(or_(User.password=='123456', User.email.endswith('itheima.com'))).all() 9. 查询id为 [1, 3, 5, 7, 9] 的用户列表 User.query.filter(User.id.in_([1, 3, 5, 7, 9])).all() 10. 查询name为liu的角色数据 关系引用 User.query.filter_by(name='liu').first().role.name 11. 查询所有用户数据,并以邮箱排序 排序 User.query.order_by('email').all() 默认升序 User.query.order_by(desc('email')).all() 降序 12. 查询第2页的数据, 每页只显示3条数据 help(User.query.paginate) 三个参数: 1. 当前要查询的页数 2. 每页的数量 3. 是否要返回错误 pages = User.query.paginate(2, 3, False) pages.items # 获取查询的结果 pages.pages # 总页数 pages.page # 当前页数
修改
data = UserInfo.query.filter(UserInfo.id==1).first()
data.name = "李四"
db.session.merge(data)
db.session.commit()
data = UserInfo.query.filter().first()
print(data.id)
db.session.delete(data)
db.session.commit()
data = UserInfo.query.filter(UserInfo.id==2).delete()
db.session.commit()
封装类,定义相关函数方法
使用
# userinfo = UserInfo(name="awu",age=19)
# # 增加数据
# userinfo.save()
### 更新数据
# userinfo = UserInfo.query.get(8)
# userinfo.name="aliu"
# userinfo.merge()
## 删除数据
# userinfo = UserInfo.query.get(8)
# userinfo.delete()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。