我有一个方法可以从数据库中以“numRecords”块(例如 100)返回项目 它的工作原理是记录偏移量,以便根据先前返回的项目开始搜索,假设所有记录都将被返回。所有这些都封装在一个名为“Walker”的类中
现在我想在搜索中添加一个 WHERE 子句,因此该算法将不起作用,因为并非所有记录都会返回
class Walker:
current_offset = 0;
def getNextRecords(cls, numRecords):
cursor = cls.database.cursor()
cmd=("SELECT *"
+ " FROM "
+ DB_TABLE
+ " LIMIT " + str(numRecords)
+ " OFFSET " + str(cls.current_offset)
)
cursor.execute(cmd)
items = cursor.fetchall()
cursor.close()
cls.current_offset += len(items)
return items
如何在遵守 WHERE 子句的同时从数据库返回连续的“numRecords”记录集?
添加带有
SELECT
子句的外部 WHERE
,以仅获取每个“块”中符合条件的记录:
SELECT * FROM (
SELECT ... LIMIT(m) OFFSET(n)
)
WHERE foo = 'bar'