Python sqlite => reportlab数据[1,2,3]和[[1],[2],[3]]之间有什么区别

时间:2013-10-24 18:07:51

标签: python sqlite

我提前道歉,但我无法理解......

我正在尝试从sqlite数据库中读取数据并将数据填充到reportlab条形图中。我拥有的示例数据是http://www.reportlab.com/snippets/3/

的摘录

sqlite3代码是:

def arrData():
    conn = sqlite3.connect('alarmdb.sqlite')
    ccursor = conn.cursor()
    strSQL = "Select distinct ErrorMsg, count(*) as Amt from tmpTable where cast(source as int)<20 group by ErrorMsg Order by count(*) desc limit 10"
    ccursor.execute(strSQL)
    arrResult = ccursor.fetchall()
    arrErrAmt = [int(element[1]) for element in arrResult]
    return arrErrAmt

但返回[200,100,50,40,..],但在reportlab示例中,它们显示: self.bar.data = [[4.22],[4.12],[3.65],[3.56],...]

我如何使用我的arrData函数?

1 个答案:

答案 0 :(得分:0)

列表[[4.22], [4.12], [3.65], [3.56], ...]的每个元素本身都是一个列表(包含一个浮点数)。

列表[200, 100, 50, 40,..]的每个元素都是一个int。因此,您需要创建大量列表,而不仅仅是大量的整数。

您可以将代码更改为:

[[int(element[1])] for element in arrResult]

或者也许:

[[float(element[1])] for element in arrResult]

如果您希望它看起来更像示例数据。