为什么python中的数据库查询不返回整数值?

时间:2018-11-02 21:49:48

标签: python sql web

为什么这样做:

cash = db.execute("SELECT cash FROM users WHERE id = :user_id", user_id = session["user_id"])

# Ensure user can afford the stock
if cash[0]["cash"] < share * quote["price"]:
    return apology("Not enough money")

这不是:

cash = db.execute("SELECT cash FROM users WHERE id = :user_id", user_id = session["user_id"])

# Ensure user can afford the stock
if cash < share * quote["price"]:
    return apology("Not enough money")

我想了解DB查询如何在python中工作。那“现金”变量存储是什么?这不是用户的现金价值吗? (int)

2 个答案:

答案 0 :(得分:2)

db.execute返回一个矩阵/表结构。在此特定示例中,该矩阵称为现金,该矩阵只有一列再次称为现金,并且其中只有一个值。

因此,让我们稍微修改一下查询以更好地理解它。如果您的查询是:

result = db.execute("SELECT * FROM users WHERE id = :user_id", user_id = session["user_id"])

假设结果如下:

all columns

当您查询此内容时:

result[0]["cash"]

它将返回100。

如果仅选择cash而不是*,则此表仅会显示一列(即您正在执行的操作):

cash column only

同样,result[0]["cash"]将给您100。

如果我是你,我不会select *select cash很好,因为它仅获取需要的内容。如果要存储该现金值以供以后使用,请以与现在相同的方式调用数据库,然后创建一个变量cashValue = result[0]["cash"]并使用它。另外,不要用相同的名称命名不同的对象,这会使您感到困惑。如果数据库表中有一列名为cash的列,请调用其他输出,例如result。然后,如果您想获取其中的值,请再次调用其他名称,例如cashValue

希望这可以澄清一切。

答案 1 :(得分:1)

您在cash中收到的是结果集。您可以将其视为类似于结构的表格。

因此,cash[0]表示索引0上的“行”,cash[0][cash]表示索引0上的“行”中的“字段”现金