在 sqlite3 中有一个或两个数字的限制 python
Having a limit in sqlite3 with one or two digits python
问题是当输入(限制)是两位数时会出错。 "Incorrect number of bindings supplied. The current statement uses 1, and there are 2 supplied." 我试图将其设为整数,但 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))
.execute()
的第二个参数需要是一个序列。例如,您可以传递 list
或 tuple
。以下是如何使其成为一个元组:
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
.
问题是当输入(限制)是两位数时会出错。 "Incorrect number of bindings supplied. The current statement uses 1, and there are 2 supplied." 我试图将其设为整数,但 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))
.execute()
的第二个参数需要是一个序列。例如,您可以传递 list
或 tuple
。以下是如何使其成为一个元组:
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
.