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

时间:2010-09-10 18:44:50

标签: sqlite

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

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

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

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

ADDED

根据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 个答案:

答案 0 :(得分:3)

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))
>>> 

有关.description属性的详细信息,请查看此处:http://www.python.org/dev/peps/pep-0249/

答案 1 :(得分:1)

因为cursor.rowcount不起作用,所以你必须得到一个倒计时并提取数字 运用     result = cursor.execute('select count(*) from the_table') print "rowcount = ",result.fetchone()[0]