即使存在值,cursor.fetchone()也返回None

时间:2018-01-08 02:50:38

标签: python database python-3.x sqlite

我试图找出如何从UserID获取单个值并在控制台中打印它。我目前的一段代码不断返回"无"即使我正在搜索的UserID有一个Currency值。

cursor.execute("SELECT Currency FROM ServerUsers WHERE USERID = %s" % (userid))
    if cursor.fetchone():
        a = cursor.fetchone()
        print(a)

2 个答案:

答案 0 :(得分:5)

当您致电execute时,会计算并提取结果,并使用fetchone / fetchmany / fetchall来检索它们。

在您的情况下,您的查询返回行作为结果,因此在cursor.fetchone中调用if会导致获取结果并随后丢弃,因此对fetchone的另一次调用将产生None,因为指针已经超过结果集中的唯一行。

检查数据是否存在的惯用sqlite方法是查询一行,并测试其真实性 -

result = cursor.fetchone()
if result:
    print(result)

答案 1 :(得分:0)

我遇到了与您相同的问题。我使用了Sqlite和Pycharm编辑器,通过刷新在Pycharm中使用的数据库(视图->工具窗口->数据库->刷新)来解决此问题。我知道成功率很低,但我希望这可以帮助某人遇到同样的问题。