Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将SQLite查询和子查询转换为Peewee语句_Sqlite_Orm_Peewee - Fatal编程技术网

将SQLite查询和子查询转换为Peewee语句

将SQLite查询和子查询转换为Peewee语句,sqlite,orm,peewee,Sqlite,Orm,Peewee,我有一个SQL语句可以满足我的需要,但是我在将它转换为相关的Peewee语句时遇到了麻烦。这里是我现在拥有的SQL,注意我现在正在使用一个子查询,但我不在乎它是否是一个子查询 select t.name, count(a.type_id) as total, ( select count(id) from assignment a where a.course_id = 7

我有一个SQL语句可以满足我的需要,但是我在将它转换为相关的Peewee语句时遇到了麻烦。这里是我现在拥有的SQL,注意我现在正在使用一个子查询,但我不在乎它是否是一个子查询

select t.name,
        count(a.type_id) as total,
        (
            select count(id)
            from assignment a
            where a.course_id = 7
            and a.due_date < date()
              and a.type_id = t.id
            group by a.type_id
            order by a.type_id
        ) as completed
from assignment a
inner join type t on t.id = a.type_id
where a.course_id = 7
group by a.type_id
order by a.type_id

您是否尝试过将子查询作为select的一部分

像这样的

query = (Assignment
 .select(
   Type.name, 
   fn.COUNT(Type.id).alias('total'), 
   Assignment.select(fn.COUNT(Assignment.id)).where(
     (Assignment.due_date < fn.DATE()) & 
     (Assignment.course == 7) &
     (Assignment.type == Type.id)
   ).group_by(Assignment.type).alias('completed'))
 .join(Type)
 .where(Assignment.course == 7)
 .group_by(Type.name))
query=(赋值)
.选择(
Type.name,
fn.COUNT(Type.id).alias('total'),
Assignment.select(fn.COUNT(Assignment.id))。其中(
(任务到期日
哦,太好了!我想了想,但没想到Peewee有那么灵活。我真的很喜欢皮维·科尔。这是一个非常棒的图书馆,与之合作非常有趣。“与之合作非常有趣”——这完全是我的目标!我很高兴你喜欢它:)
query = (Assignment
 .select(
   Type.name, 
   fn.COUNT(Type.id).alias('total'), 
   Assignment.select(fn.COUNT(Assignment.id)).where(
     (Assignment.due_date < fn.DATE()) & 
     (Assignment.course == 7) &
     (Assignment.type == Type.id)
   ).group_by(Assignment.type).alias('completed'))
 .join(Type)
 .where(Assignment.course == 7)
 .group_by(Type.name))