首页 > 解决方案 > 当找不到它正在搜索的值(在 SQL 中)时,返回 SELECT 是什么?

问题描述

我正在做一个练习,我需要通过 python 更新 SQL DB 表中的一些值,如果在数据库中找不到“用户”和另一个“X 条件”,我无法找出 SELECT 返回的内容。

我在另一个线程中读到 SELECT 应该返回一个空集,但我仍然遇到问题!

当我运行时:

example = db.execute("SELECT value FROM table1 WHERE user=:user AND X=:Y", user=user, X=Y)

我尝试像这样的条件

if example == {}:
    db.execute("INSERT [...]")

当集合为空时,我从不进入这种情况来执行 INSERT 的东西。

我找到了解决这个问题的另一条路线(写在下面),但它是否有效?

if not example:
    do the job

编辑:我正在使用 sqlite3!

标签: pythonsqldatabaseselectcs50

解决方案


假设您使用的是sqlite3,该execute方法总是返回一个 Cursor ,您可以使用它来获取结果行(如果有的话)。你在做什么类型的查询并不重要。

如果您获取的第一个结果立即为 None,则没有返回任何行:

if example.fetchone() is None:
    db.execute("INSERT [...]")

或者,您可以将所有行作为列表获取,并将其与空列表进行比较:

if example.fetchall() == []:
    db.execute("INSERT [...]")

推荐阅读