问题:使用sqlalchemy如何用or过滤条件
方法:
user = self.db.query(User).filter(or_(User.id=3, User.school=12)).all()
这样就可以过滤出用户id为3或者学校id为12的所用用户信息了
分类 "Database" 下的文章
问题:使用sqlalchemy需要实现分页
解决:使用limit和offset结合的方法
方法:
user = self.db.query(User).filter(User.age==12).offset(2).limit(10).all()
获得数据的条数
count = self.db.query(User).filter(User.age==12).count()
查询速度更快的方法
count = self.db.query(func.count('1')).select_from(User).filter(User.age==12).scalar()
注:sqlalchemy不能写成limit(2,10)
问题:在sqlalchemy中需要根据if条件语句分开写查询语句filter,如何分开写filter实现多次拼接呢
解决:亲自实践
方法:
user = self.db.query(User.id,User.username,User.fullname).filter_by(org_id=99877, type=4).all()
这语句可以写成下面的
user = self.db.query(User.id,User.username,User.fullname).filter_by(org_id=99877).filter_by( type=4).all()
上面的是连着写的,下面是分开的
user = self.db.query(User.id,User.username,User.fullname).filter_by(org_id=99877)
user = user.filter_by(type=4)
user = user.all()
userInfo = select user.id as uid, class.id as cid, user.name where user.class=class.id;
类似的sqlalchemy写法,User和Class为两个model
userInfo = self.db.query(User.id.label('uid'),Class.id.label('cid'),User.name).filter(User.class == Class.id).all()
问题:users表的id希望从12345开始,而不是1开始
解决:修改mysql中users表的auto_increment
方法:
alter table users AUTO_INCREMENT=12345;