Python 有更好的方法吗?

Python 有更好的方法吗?,python,sqlite,Python,Sqlite,我有一个包含“cellid”、“date”(日期时间)和“block”(实际)列的表 我正在尝试查找过去3天中block>1的所有id 我现在是这样做的: cells = npar.db.execute("SELECT cellid FROM data WHERE block > 1 AND date=?", (files[0][1],)).fetchall() cells1 = npar.db.execute("SELECT cellid FROM data WHERE block &g

我有一个包含“cellid”、“date”(日期时间)和“block”(实际)列的表

我正在尝试查找过去3天中block>1的所有id

我现在是这样做的:

cells = npar.db.execute("SELECT cellid FROM data WHERE block > 1 AND date=?", (files[0][1],)).fetchall()
cells1 = npar.db.execute("SELECT cellid FROM data WHERE block >1 AND date = ?", (files[1][1],)).fetchall()
self.common(cells,cells1)
cells1 = npar.db.execute("SELECT cellid FROM data WHERE block >1 AND date = ?", (files[2][1],)).fetchall()
self.common(cells,cells1)

print len(cells)
def common(self,a,b):
    for item in a:
            if item not in b:
                a.remove(item)

b = npar.db.execute("SELECT cellid FROM data WHERE block > 1 AND date >= ? GROUP BY cellid HAVING COUNT(cellid) = 3", (files[2][1],)).fetchall()
        print len(b)
len(b)不等于len(单元格)

“在过去3天内”?那么下面的方法是否可行

cells = npar.db.execute("SELECT cellid FROM data "
                        "WHERE block > 1 "
                        "AND date >= ? "
                        "GROUP BY cellid "
                        "HAVING COUNT(*) = 3", (files[0][1],)).fetchall()

我首先意识到我原来的算法是错误的。我需要找到这3个查询中的公共元素,在我更正它之后,我得到了352个结果,但是在您的查询中,我只得到了282个结果……您的“HAVING COUNT(cellid)=3”子句没有任何意义。您的上一个查询只会选择那些恰好有三次发生的单元格,其中block>1和date>=您的时间限制。这正是我想要的,我想知道为什么它不等于len(单元格)