我有一个值数据库,第一列是数据库中每一行的标识号。
我想做的是创建一个函数以检索每n-1(或n-offset)行,因此,如果我给该函数一个类似“ 50”的数字,它将打印出具有以下行号的数据库:是50-1的倍数。因此,输入“ 50”将给出“ 49”,“ 99”,“ 149”,“ 199”等行,而不是“ 50”,“ 100”,“ 150”,“ 200”行,并使用这些行打印数据库特定的行。
这是我到目前为止所拥有的:
import sqlite3
from tabulate import tabulate
def retrieve_nth_row(rownum):
with conn:
data = c.execute(f"SELECT * FROM Table_name WHERE IdNum > 0 and IdNum <= (SELECT max(IdNum) FROM Anime) AND IdNum % {rownum} = 0")
print(tabulate(data, headers="keys", tablefmt="grid", stralign='center', numalign='center')) #Prints the database as a neat table
我所编写的代码为指定的'rownum'的每一个倍数打印出数据库(因此'rownum'= 50则打印出50,100,150,200等行)。我似乎无法弄清楚如何添加偏移量以打印出“行编号”-(偏移量)行。
答案 0 :(得分:1)
49%50是49.
99%50是49.
149%50是49。等等。
every = 50
offset = 1
c.execute("SELECT ... WHERE ... idNum % ? = ?",
[every, (every - offset) % every])
(如果偏移量为零,则第二个参数中需要额外的%
。)