首页 > 解决方案 > 从 sql 表中检索单个值

问题描述

我希望从我创建的这个数据库中检索一个值。例如,用户将从下拉框中选择一个名称(这些名称对应于数据库中的名称列)。选择的名称将存储在名为 name_value 的变量中。我想知道如何在数据库中搜索 name_value 中的名称,并且只将下一列中名为 Scientific 的其他文本返回到另一个名为 new_name 的变量中。我希望我解释得很好?

  connection = sqlite3.connect("Cw.db")
  crsr = connection.cursor()
  crsr.execute("""CREATE TABLE Names(
               Name text,
               Scientific text)""")

插入这些值:(还有更多但没有必要全部添加)

  connection = sqlite3.connect("Cw.db")
  crsr = connection.cursor()
  crsr.execute("""INSERT INTO Names (Name, Scientific)
                  VALUES
                  ('Human', 'Homo Sapien');""")

标签: pythonsqlsqlite

解决方案


SQL 中的SELECT语句可用于查询具有特定值的行,并指定要返回的列。

在您的情况下,代码看起来像这样


stmt = """\
SELECT Scientific 
  FROM Names
  WHERE Name = ?
  LIMIT 1
"""
name = 'Human'
crsr.execute(stmt, (name,))
new_name = crsr.fetchone()[0]

需要注意的几点:

  • 我们?SELECT语句中使用 a 作为我们要查询的值的占位符
  • 我们LIMIT 1SELECT语句中设置以确保最多只返回一行,因为您希望将结果分配给单个变量。
  • 传递给的值crsr.execute必须是一个元组,即使只有一个值
  • 的返回值crsr.fetchone是 a tuple,即使我们只获取一列。

推荐阅读