如何按名称选择列?(Python和SQLite3)

She*_*don 6 python sqlite

目前我有以下代码:

c.execute("SELECT * FROM table")
for row in c.fetchall():
    print row[0]
    print row[1]
Run Code Online (Sandbox Code Playgroud)

但是,我更改了表的结构,现在我必须更改索引值以表示此更改.有没有办法获得使用列名?

Igu*_*aut 10

请参阅sqlite3模块的文档中的行对象.如果你使用sqlite3.Rowrow_factory,你将获得一个比普通元组稍强大的对象.我想它的开销略高,因此不是默认行为.

  • 根据文档,没有真正更高的开销:_“Row 提供基于索引和不区分大小写的基于名称的列访问**几乎没有内存开销**。它可能比您自己的自定义基于字典的方法更好甚至是基于 db_row 的解决方案。”_ http://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.row_factory (3认同)

CL.*_*CL. 10

因此,建议在执行以下操作时始终使用显式列名SELECT:

c.execute("SELECT color, fluffiness FROM table")
for row in c.fetchall():
    print row[0]         #  <-- is always guaranteed to be the color value
    print row[1]
Run Code Online (Sandbox Code Playgroud)

  • 这也是一个很好的答案。或者它们的某种组合。尽管获取一个大表的所有列可能会很痛苦。 (2认同)