代码之家  ›  专栏  ›  技术社区  ›  prosseek

如何使用Python/SQLite获得查询结果?

  •  2
  • prosseek  · 技术社区  · 14 年前

    我使用Python/SQLite访问数据库。在运行查询并获得结果之后,我想从查询的结果和数据库中知道行数、列数和列名。

    例如,如果我运行“SELECT*fromtable”,得到

    id    name    number
    --------------------
    1     John    10
    2     Jay     20
    

    我能知道我有2行3列,列数是id/name/number吗?

    补充

    根据Rafael SDM Sierra的回答,我可以得到如下信息。

        description = self.cursor.description
        qr.numberOfCol = len(description) <-- # of column
        for item in description:
            qr.names.append(item[0]) <-- Names of column
    
        count = 0
        for row in self.cursor:
            count += 1
            qr.result.append(row)
    
        qr.numberOfRow = count <-- # of row
    
    2 回复  |  直到 14 年前
        1
  •  3
  •   Rafael Sierra    14 年前

    SQLite3 for Python不支持 .rowcount 属性并始终返回-1。

    .description 属性。

    >>> import sqlite3
    >>> c = sqlite3.connect(':memory:')
    >>> c.execute('CREATE table foo (bar int, baz int)')
    <sqlite3.Cursor object at 0xb76e49e0>
    >>> c.execute('insert into foo values (1,1)')
    <sqlite3.Cursor object at 0xb778c410>
    >>> c.execute('insert into foo values (2,2)')
    <sqlite3.Cursor object at 0xb76e4e30>
    >>> c.execute('insert into foo values (3,3)')
    <sqlite3.Cursor object at 0xb778c410>
    >>> cursor = c.execute('select * from foo')
    >>> cursor.rowcount
    -1
    >>> cursor.fetchone()
    (1, 1)
    >>> cursor.description
    (('bar', None, None, None, None, None, None), ('baz', None, None, None, None, None, None))
    >>> 
    

    .说明 http://www.python.org/dev/peps/pep-0249/

        2
  •  2
  •   user3451435    10 年前

    因为游标.rowcount如果不起作用,你就得倒计时并提取数字 使用 result = cursor.execute('select count(*) from the_table') print "rowcount = ",result.fetchone()[0]