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 回目で 1 ~ 1000 行を正しく返しますが、2 回目のループでは、1001 ~ 2001 行ではなく、1 ~ 2001 行、1 ~ 3001 行などを返します。 1.