【发布时间】:2020-11-23 21:37:30
【问题描述】:
刚开始使用 SQLite。我正在尝试查找我的用户表中是否存在名称。我正在使用以下代码:
cursor.execute("SELECT * FROM users WHERE users.username = ?", (name,))
其中 name 是传递给包含此代码的函数的参数(字符串)。从我在文档中看到的内容来看,这就是我应该如何选择使用参数而不是单个值。
但是使用:
print(len(cursor.fetchall()))
返回长度 0。用户表存在并填充了用户,包括我要选择的用户。我已经在查询控制台中验证了这一点。
如果我做错了什么,我们将不胜感激。我认为这是我的查询的问题
【问题讨论】:
-
将其分解为基础知识。首先尝试
cursor.execute("SELECT * FROM users"),看看你会得到什么结果。 -
另外,当查询已经指定了表时,为什么还要使用
users.username?我本来希望只看到username。 (我不知道这是个问题,但对我来说似乎很不寻常。) -
那是我的错,它最初是用户名,只是我试图让它使用的东西。这是个好建议,谢谢,我应该想到这一点。
-
@JohnGordon 虽然在这个简单的查询中不需要,但在字段名前加上表名既不稀奇也不会导致问题