【发布时间】:2016-12-26 17:59:10
【问题描述】:
假设我有一个通过 MySQLDB 访问的 MySQL 表。我有一个标准
SELECT statement:
sql = "SELECT * FROM EMPLOYEE \
WHERE INCOME > '%d'" % (1000)
然后我用光标执行它并拔出如下的列。
cursor.execute(sql)
results = cursor.fetchall()
for row in results:
fname = row[0]
lname = row[1]
age = row[2]
sex = row[3]
income = row[4]
是否可以在单个语句中分配所有列名?比如:
for row in results:
fname, lname, age, sex, income = unpack(row)
我总是可以做到的:
fname, lname, age, sex, income = row[0], row[1], row[2], row[3], row[4]
但是我的表中有超过 30 列,这让我很痛苦。 请注意,虽然我现在正在使用 MySQL,但我希望它尽可能与数据库无关;我们仁慈的霸主可能会决定随时将所有内容移植到另一个数据库。
【问题讨论】:
-
您应该删除问题中对 SQL 的引用,因为它真的无关紧要。您有一个要解构的数组;你如何获得数据并不重要。
-
为什么不直接写
for fname, lname, age, sex, income in results:? -
如果您期望固定数量和顺序的列,您可能需要重新考虑
SELECT *,如果表格布局发生变化,您会破坏事情。 -
您甚至可以考虑对表运行
PRAGMA table_info()查询以查看列数和标题名称
标签: list python-2.6