【问题标题】:Trying to check if value is in sqlite3 with Python尝试使用 Python 检查值是否在 sqlite3 中
【发布时间】:2020-07-27 18:29:33
【问题描述】:

我正在尝试使用 python 检查一个值是否在 SQLite 中,然后如果该值存在则更新表,如果不存在则创建一个新值。我试图创建一个游标来检查行,将行附加到带有循环的列表中,检查值是否存在,检查行数......我似乎在尝试访问值时挂断了 if 语句从查询初始化。代码如下:

checkT = db.execute("SELECT COUNT(*) FROM trans WHERE stock=:stock AND id=:user_id", stock=request.form.get("symbol"), user_id=session["user_id"])
if checkT > 0:
            print("there")
else:
            print("not there")

我该如何解决这个问题?谢谢!

【问题讨论】:

    标签: python-3.x sqlite cs50


    【解决方案1】:

    来自CS50 Library for Python doc for execute

    退货

    对于 SELECTs,listdict 对象,每个对象代表结果集中的一行;对于 INSERT,新插入行的主键(如果没有,则为 None);对于 UPDATE,更新的行数;对于 DELETE,删除的行数;对于 CREATE,成功时为真;出错时,会引发 RuntimeError

    checkT 是一个带有一个元素的list,它是一个带有一个键/值对的dict

    checkT[0]['COUNT(*)'] 将给出从 sql 返回的数字。在这种情况下不适合计算行数,因为此查询将始终返回一行。

    一个提示:SELECT 中的列名可以使用别名,赋予不同的名称,如下所示:

    SELECT COUNT(*) as count from......。这只是为了打字方便,因为返回的字典中的键将是count 而不是COUNT(*)

    请记住:在flask run 终端中有一个回溯,其中提供了有关收到的错误的更多详细信息(假设“挂起”表示 500 内部服务器错误)。

    【讨论】:

    • 太棒了,谢谢!在你的帮助下,我已经让它工作了!感谢您花时间解释它。
    猜你喜欢
    • 2013-09-19
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 2015-07-14
    • 2018-12-21
    • 1970-01-01
    相关资源
    最近更新 更多