hand
_1_1_2
4
python3.X - Web - Flask1.1.1
共46篇
python3.X - Web - Flask1.1.1
返回栏目
0k
0.3k
1k
6k
0.6k
0.8k
0.3k
0.1k
0.2k
0.8k
0.6k
0.6k
0.1k
0.5k
0.2k
2k
0.3k
5k
2k
2k
1k
0.3k
1k
0.1k
1k
1k
0.5k
2k
2k
0.7k
1k
2k
0.1k
1k
0.1k
2k
2k
0.9k
5k
4k
1k
1k
3k
1k
0k
0k
返回python3.X - Web - Flask1.1.1栏目
作者:
贺及楼
成为作者
更新日期:2024-03-24 12:04:10
作用:增删改查数据库
参考:https://www.imooc.com/article/details/id/22343
参考:https://www.cnblogs.com/shangerzhong/articles/10381793.html
#真正的数据库,蓝图过来的
from app import db
article = Article(username=username, age=age)
db.session.add(article)
db.session.commit()
查
order.state = "1" #修改数据
db.session.commit()
查-改同步-边查边改synchronize_session="evaluate"
ITtable.query.filter(ITtable.id >= id).update({"id": ITtable.id + 1}, synchronize_session="evaluate")
db.session.commit()
表类名.查.已知信息.条件.限制.数量User.query.filter_by(name="小明").order_by(User.id.desc()).limit(50).all()
filter_by()——简单搜索filter_by(name="小明")
filter()——复杂搜索
# 其他表
filter_by(User2.name="小明")
# 有相似
filter_by(User.name.like("%小%"))
# 非 ! 不等于
filter_by(User.sex !="男")
# 与或
#flask-sqlalchemy同字段多条件的过滤方法
from operator import and_,or_
filter(and_(User.name.like("小%"), User.fullname.like("first%"))).all())
filter(or_(User.name.like("小%"), User.password != None)).all())
# 注意:要用==,不能是=
# 空值
filter(User.name == None)
filter(User.name != None)
# 超多条件
map = []
map.append(Accident.route_id == 1)
filter(*map)
# 列表
user_list_in_ = User.query.filter(User.phone.in_(["123","456"],)).all()
顺序
order_by(User.id)
order_by("id")
倒序
order_by(-User.id)
order_by("-id")
50代表数量
a = db.session.execute("select * from user")
db.session.commit()
data = list(a) # 最好转成list这样才可以多次使用
a.fetchone().xxx # 取值
a.fetchall().xxx
.count()
可能有两个或多个操作
前一个操作成功
后一个可能操作错误
导致数据发生混乱
事务就是全都没问题才提交到数据库
一般是另起一个方法管理这个逻辑
def new_group(cls, form):
group = CaseGroup.query.filter_by(name=form.name.data, delete_time=None).first()
if group is not None:
raise ParameterException(msg="分组已存在")
# 新增分组的时候同时新增可查看当前用例组的人员。当出现问题时进行回滚,人员和分组都不插入
try:
group = CaseGroup()
group.name = form.name.data
group.info = form.info.data
db.session.add(group)
db.session.flush()
if form.users.data:
current_app.logger.info(group.id)
for user in form.users.data:
user_auth = UserAuth()
user_auth.user_id = user
user_auth.auth_id = group.id
user_auth.type = UserAuthEnum.GROUP
db.session.add(user_auth)
db.session.commit()
except Exception as e:
db.session.rollback()
raise UnknownException(msg="新增异常 数据已回滚")
return True
try except 将2次新增操作包裹起来
db.session.rollback()当出现异常时,进行数据回滚。
db.session.add()在一次新增后使用进行数据暂存,此时并未真正提交到数据库中
db.session.commit()需要在所有操作执行后进行数据提交。
db.session.flush()刷新获取分组id。在这个例子中,新增关联表的数据需要已新增分组数据的id,此时未commit所以自增id为None,需要在新增分组后使用
python3.X - Web - Flask1.1.1
整章节共46节
快分享给你的小伙伴吧 ~