我有一个包含 10,000 行的表,我想选择前 1000 行,然后再次选择,这次是下一组行,即 1001-2001。
我正在使用该BETWEEN
子句来选择值的范围。我也可以增加值。这是我的代码:
count = cursor.execute("select count(*) from casa4").fetchone()[0]
ctr = 1
ctr1 = 1000
str1 = ''
while ctr1 <= count:
sql = "SELECT AccountNo FROM ( \
SELECT AccountNo, ROW_NUMBER() OVER (ORDER BY Accountno) rownum \
FROM casa4 ) seq \
WHERE seq.rownum BETWEEN " + str(ctr) + " AND " + str(ctr1) + ""
ctr = ctr1 + 1
ctr1 = ctr1 + 1000
cursor.execute(sql)
sleep(2) #interval in printing of the rows.
for row in cursor:
str1 = str1 + '|'.join(map(str,row)) + '\n'
print "Records:" + str1 #var in storing the fetched rows from database.
print sql #prints the sql statement(str) and I can see that the var, ctr and ctr1 have incremented correctly. The way I want it.
我想要实现的是使用消息队列 RabbitMQ,我会将这些行发送到另一个数据库,我想加快这个过程。选择全部并将其发送到队列会返回错误。
代码的输出是它在第一次正确返回 1-1000 行,但是在第二次循环中,它返回 1-2001 行、1-3001 等,而不是 1001-2001 行。它总是开始1.