SQLite3 在一个 SELECT 语句中获取多列(python)

Chr*_*ina 5 python sqlite fetch

我想知道如何同时获取超过 1 列。这是我到目前为止的代码,但我收到错误: ValueError: too many values to unpack (expected 2)

con = sqlite3.connect('database.db')
cur = con.cursor()
cur.execute("SELECT name, age FROM employees")
name, age = cur.fetchall()
Run Code Online (Sandbox Code Playgroud)

实际上是否可以同时获取超过 1 列?谢谢!

Mar*_*ers 5

cur.fetchall()为您提供一个(name, age)元组列表,其数量与表中的行数一样多employees。您包含的不仅仅是两行,因此您的name, age = ...语法失败,因为这需要有两个结果。即使只有行,您也会将这两行(每行一个元组)分配给名称nameage这可能不是您想要的。

您可能想迭代光标;这使您可以单独处理每个行元组,包括将两列值分配给两个单独的目标:

for name, age in cur:
    # process each name and age separately
Run Code Online (Sandbox Code Playgroud)

或者将cur.fetchall()结果分配给单个变量:

results = cur.fetchall()
Run Code Online (Sandbox Code Playgroud)

并根据需要处理该列表。