问题:使用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)
分类 "Database" 下的文章
问题:在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;
问题:数据库中有好多用户名相同的用户,希望查询出来
解决:将查询结果作为下一个查询的条件使用
方法:
select * from users where name in (select name from users where school_id in (986,988,967) group by name having count(name)>1);
将重复的用户名都查出来,再根据查出来的用户名查询用户信息