Python3 Flask_sqlalchemy使用
2021-02-01 本文已影响0人
南城忆往
项目文件app.py仅学习使用。
from flask import Flask, request, jsonify, json
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# 数据库配置
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///../conf/sn.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)
# 模型配置
class SysConf(db.Model):
"""
系统配置
"""
__tablename__ = 'sys_conf'
id = db.Column(db.Integer, primary_key=True, nullable=True, autoincrement=True)
taskCycle = db.Column(db.Integer)
taskUnit = db.Column(db.Integer)
debug = db.Column(db.Integer)
# 降序排列
__mapper_args__ = {"order_by": id.desc()}
def __repr__(self):
return '<SysConf %r>' % self.id
基本的使用方法:
- SELECT
# 查询所有数据
data = SysConf.query.all()
# 条件查询
data = db.session.query(SysConf.id).filter(SysConf.debug==0).all()
# 执行原生SQL语句
sql = 'select * from sys_conf order by id desc '
data = db.session.execute(sql).fetchone()
# 注意返回的结果要用list转化下。
print(list(data))
# 带参查询
sql = 'select * from t_task_consume where collectTime=collectTime '
data = db.session.execute(sql, {'collectTime': collect_time}).fetchall()
# 分组查询
data = db.session.query(TaskConsume.deviceId, db.func.count(TaskConsume.deviceId)).filter(TaskConsume.supplementNum==0).group_by(TaskConsume.deviceId).all()
print(list(data))
# 排序查询
# asc()表示升序排序 、desc()表示降序排序
User.query.filter().order_by(User.id.desc()).all()
# [name:zhou, name:chen, name:zhang, name:wang]
批量更新
# 查询条件
args = [1,2,3,4]
db.session.query(User).filter(User.id.in_(args))
.update({User.age: User.age+1}, synchronize_session=False)
db.session.commit()
分页查询
分页:第一个参数表示页数,第二个参数表示每页条目数,第三个参数分页异常不报错
pa = User.query.filter().paginate(1,2,False)
pa.items # 获取分页后的数据
# [name:wang, name:zhang]
pa.pages # 获取分页后的总页数
# 2
pa.page # 获取当前页数
# 1
pa = User.query.filter().paginate(2,2,False)
pa.items
# [name:chen, name:zhou]