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

基本的使用方法:

# 查询所有数据
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]
上一篇 下一篇

猜你喜欢

热点阅读