【问题标题】:How to retrieve a value from a SQLite3 table by column name and matching row value如何通过列名和匹配的行值从 SQLite3 表中检索值
【发布时间】:2023-01-09 03:09:53
【问题描述】:

我有一个看起来像这样的表(总结一下,第一行是列名):

'hand_total', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'A'
('5', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H')
('6', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H')
('7', 'H', 'D', 'D', 'D', 'D', 'H', 'H', 'H', 'H', 'H')
('8', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'H', 'H')
('9', 'H', 'D', 'D', 'D', 'D', 'H', 'H', 'H', 'H', 'H')
('10', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'H', 'H')
('11', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'H')
('12', 'H', 'H', 'S', 'S', 'S', 'H', 'H', 'H', 'H', 'H')
('13', 'S', 'S', 'S', 'S', 'S', 'H', 'H', 'H', 'H', 'H')

我希望能够使用 python 变量通过标题名称和“hand_total”列中存在的值从该表中选择一个值。例如,如果我想要一个值,其中 '3' 列和 hand_total=='11 intersect' 行,我希望返回值 'D'。但无论我尝试什么,我似乎都无法让我的 sqlite3 查询返回我所期望的。

我尝试过

cur == conn.cursor()
cur.execute("SELECT 3 FROM test_table")
results = cur.fetchall() 

我希望上面的内容能够返回标题为“3”的列中的所有列值。但我得到的结果最终只是显示

[(3,), (3,), (3,), (3,) ....] until all length of db

【问题讨论】:

  • 如果列名是数字,则需要将其放在反引号内,否则将被视为数字文字。尽量避免这样的列名。
  • hand_total = '11 intersect' 没有行。您真的是想在值中包含 intersect 吗?

标签: python database sqlite sqlite3-python


【解决方案1】:

如果列名不是标识符,请使用双引号 (ANSI SQL)、反引号(如 MySQL)或方括号(如 SQL-Server)将其转义。

cur.execute("SELECT "3" FROM test_table WHERE hand_total = 11")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-13
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    相关资源
    最近更新 更多