在元组的最后一项之后添加尾随逗号

Adding a trailing comma after the last item of tuple

我正在使用 sqlite3,它要求我们在元组(值)的最后一项之后放置尾随逗号。下面的示例应该 return 预期输出 (2, 3,)。是否有可以处理此问题的内置函数?

args = 2, 3

print(args)
# (2, 3)

print((args,))
# ((2, 3),)

sqlite3 在 'John'

后没有尾随逗号
import sqlite3

conn = sqlite3.connect('test.db')
c = conn.cursor()
c.execute("SELECT * FROM stocks WHERE first_name = ?", ('John'))
print(c.fetchall())
conn.close()

# sqlite3.ProgrammingError: Incorrect number of bindings supplied. The
# current statement uses 1, and there are 4 supplied.

sqlite3 在 'John'

后带有逗号
import sqlite3

conn = sqlite3.connect('test.db')
c = conn.cursor()
c.execute("SELECT * FROM stocks WHERE first_name = ?", ('John',))
print(c.fetchall())
conn.close()

# [(1, 'John')]

这是不可能的。因为您使用的是元组,如果您有一个元素,则需要逗号。通过将括号 () 替换为方括号 [].

来使用列表

您的陈述在以下细节上有所不同:

('John')  ## this is not a tuple, it just evaluates to the string 'John'
('John',) ## this *is* a tuple, containing a string 'John' as its only element

但是,只有在元组只有一项的情况下存在差异。

('John', 'Sue') == ('John', 'Sue',)

... 是一个正确的陈述,因为一旦您拥有多个项目,该值就会明确解析为一个元组;不需要尾随逗号。