Python sqlite3-检索数据库中的每n-1行

时间:2018-07-22 03:04:54

标签: python python-3.x sqlite

我有一个值数据库,第一列是数据库中每一行的标识号。

我想做的是创建一个函数以检索每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等行)。我似乎无法弄清楚如何添加偏移量以打印出“行编号”-(偏移量)行。

1 个答案:

答案 0 :(得分:1)

49%50是49.
99%50是49.
149%50是49。等等。

every = 50
offset = 1
c.execute("SELECT ... WHERE ... idNum % ? = ?",
          [every, (every - offset) % every])

(如果偏移量为零,则第二个参数中需要额外的%。)