在sqlite3中有一个或两个数字python的限制

时间:2018-01-10 19:49:17

标签: python sqlite limits

问题是当输入(限制)是两位数时,它会给出错误。 "提供的绑定数量不正确。当前语句使用1,并且提供了2个。"我试图使它成为一个整数,但SQLite3需要字符串。如果我定义一个常量,它仍然不起作用。但如果它是一位数字,它就可以工作。

limit = input("Enter the number of scores you want to see: ")
self.cursor.execute('SELECT Name, Gender, Age, Score, Date, Time FROM Link JOIN Scores ON  Score_ID = Scores.ID JOIN Player ON Player_ID = Player.id ORDER BY Score DESC LIMIT ?', (limit))

1 个答案:

答案 0 :(得分:3)

.execute()的第二个参数需要是一个序列。例如,您可以传递listtuple。以下是如何使它成为一个元组:

self.cursor.execute(
    'SELECT Name, Gender, Age, Score, Date, Time FROM Link JOIN Scores ON  Score_ID = Scores.ID JOIN Player ON Player_ID = Player.id ORDER BY Score DESC LIMIT ?',
    (limit,))

以下是如何将其列为清单:

self.cursor.execute(
    'SELECT Name, Gender, Age, Score, Date, Time FROM Link JOIN Scores ON  Score_ID = Scores.ID JOIN Player ON Player_ID = Player.id ORDER BY Score DESC LIMIT ?',
    [limit])

注意:

  • limit='9'有效但limit='10'失败的原因是字符串也是序列。序列的元素是构成较大字符串的1个字符的字符串。因此,在第一种情况下,您传递单个参数'9'。在第二个中,您传递了两个参数'1''0'

  • (limit)失败但(limit,)成功的原因与Python语法的怪癖有关。括号()用于表达式分组和元组创建。 (obj)只是对象obj本身。另一方面,(obj,)是一个成员tuple