【发布时间】:2017-12-03 18:00:20
【问题描述】:
我试图将 SQLite 中的三个值保存在 Python 列表中。所有值都来自不同的列但在同一行。如果该值为 null 我不想将其添加到列表中。这是我写的代码:
def create_list(self, chat):
list = []
for x in range(1, 3):
column_name = "list" + str(x)
value = c.execute("SELECT (?) FROM user WHERE (?) NOTNULL AND id = (?)", (column_name, column_name, chat)).fetchall()
if value != None:
list.append(value[0][0])
print(list)
它不打印列表中的 SQLite 值,而是打印: ['list1', 'list2', 'list3'] (如果表中的值之一为空,则不会打印该值。例如,如果liste3 列中的值为 null 它只打印 ['list1', 'list2']) 我该如何解决这个问题,以便将实际的 SQLite 值保存在列表中?
【问题讨论】:
-
你能用英文解释你正在解决的问题吗?例如,这是一个聊天网站,您想知道某组用户是否一直在聊天?另外,您的表中还有哪些数据?很抱歉,您选择的变量名很糟糕,因此您对这段代码的意图完全不清楚。
-
它是一个聊天机器人,用户可以在其中一起创建列表。每个用户可以是三个列表的成员。列表的名称保存在 list1、list2 和 list3 列中。这个函数应该基本上打印出用户是 python 列表中成员的列表的名称,以便机器人能够将名称输出给用户。对不起,我希望它现在变得更好
-
您不能使用 DBAPI 参数替换将 SQL 标识符粘贴到查询中。您正在执行的第一个查询是
SELECT ('list1') FROM user WHERE ('list1') NOTNULL AND id = ('whateverchatis')。参数根据它们的 Python 类型插入,在这种情况下,作为(引用的)字符串。 -
好吧,有道理。我是 python 的新手,你能告诉我如何将“column_name”转换为可以插入 SQL 语句的数据类型吗?