赞
踩
作为数据的操作,最基本的就是增删改查
常用的SQLAlchemy查询过滤器
过滤器 | 说明 |
---|---|
filter() | 把过滤器添加到原查询上,返回一个新查询 |
filter_by() | 把等值过滤器添加到原查询上,返回一个新查询 |
limit | 使用指定的值限定原查询返回的结果 |
offset() | 偏移原查询返回的结果,返回一个新查询 |
order_by() | 根据指定条件对原查询结果进行排序,返回一个新查询 |
group_by() | 根据指定条件对原查询结果进行分组,返回一个新查询 |
常用的SQLAlchemy查询执行器
方法 | 说明 |
---|---|
all() 以列表形式返回查询的所有结果 | |
first() | 返回查询的第一个结果,如果未查到,返回None |
first_or_404() | 返回查询的第一个结果,如果未查到,返回404 |
get() | 返回指定主键对应的行,如不存在,返回None |
get_or_404() | 返回指定主键对应的行,如不存在,返回404 |
count() | 返回查询结果的数量 |
paginate() | 返回一个Paginate对象,它包含指定范围内的结果 |
创建表:db.create_all()
删除表:db.drop_all()
以讲师,教室,课程,单元 为例,首先需要设置ForeignKey外键约束
#返回一条
PptAgendas.query.filter_by(name="王").first()
PptAgendas.query.first()
PptAgendas.query.get(1)
PptAgendas.query.get_or_404(1)
#返回所有
PptAgendas.query.filter_by(name="王").all()
一条数据返回的结果为列表,且不支持jsonify,需要在model类中定义方法转下格式
def to_json(self):
dict = self.__dict__
if "_sa_instance_state" in dict:
del dict["_sa_instance_state"]
return dict
多条通过for…in调用to_json
通过keyword关键字搜索获取所有的单元和所属的教室名,
使用join()方法,需要先行在model类中定义ForeignKey进行关联,如果有多个外键同时关联一张表,需要在join()里进行指定关联
获取指定字段使用with_entities(),where语句写在filter()中
Sections.query.with_entities(Sections, Rooms.namecn).join(Rooms, Rooms.id == Sections.roomid).filter(
or_(Sections.id.like('%' + keyword + '%'), Sections.topiccn.like('%' + keyword + '%'),
Sections.topicen.like('%' + keyword + '%'),
Sections.roomid.like('%' + keyword + '%')),
not_(Sections.del == 1)).all()
#SELECT a.*,b.namecn from sections a INNER JOIN rooms b on
#(a.roomid = b.id) WHERE ...
先查出数据放到会话里,再通过会话进行删除
#删除
result=Room.query.filter(Room.namecn=='111').first()
db.session.delete(result)
try:
db.session.commit()
#失败打印错误日志并回滚
except Exception as e:
db.session.rollback()
print(e)
同样先查出
result=Room.query.filter(Room.namecn=='111').first()
result.namecn= "王"
try:
db.session.commit()
#失败打印错误日志并回滚
except Exception as e:
db.session.rollback()
print(e)
放在model对象里
result=Room(namecn="111")
db.session.add(result)
try:
db.session.commit()
#失败打印错误日志并回滚
except Exception as e:
db.session.rollback()
print(e)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。