使用 Python 将 SQL 表中的列保存到数组中

我试图从我的数据库中提取数据并将其放入可以在 chart.js 中显示的格式。我使用 python,我的数据库使用 sqlite3。我设法从表中提取必要的值并以表格格式打印出来进行检查,但我不确定从这里去哪里。


from os import mkdir

import sqlite3


try:

    conn = sqlite3.connect('foldername/db.sqlite')

except sqlite3.OperationalError:

    mkdir('foldername')

finally:

    conn = sqlite3.connect('foldername/db.sqlite')


cursor = conn.cursor()


room_no = 1


cursor.execute(

    "SELECT room, strftime( '%H:00', date ) AS HOUR, SUM(count) AS DENSITY FROM crowd WHERE strftime('%Y-%m-%d', date) = strftime('%Y-%m-%d','now') AND room = ? group by HOUR order by HOUR asc",(room_no,))

for row in cursor:

    print('{0} : {1}, {2}'.format(row[0], row[1], row[2]))


cursor.close()

conn.close()

为了澄清,输出当前打印如下:


1 : 09:00, 3

1 : 10:00, 4

1 : 11:00, -2

1 : 12:00, 1

1 : 13:00, 1

1 : 14:00, 1

但我需要将不同的列放入这样的数组中:


['09:00','10:00','11:00',...]

[3, 4, -2,...]

有什么建议么?


慕尼黑8549860
浏览 129回答 1
1回答

小怪兽爱吃肉

您可以zip(*...)在 python 中使用transpose您的数据。cursor.execute("SELECT room, strftime( '%H:00', date ) AS HOUR, SUM(count) AS DENSITY FROM crowd WHERE strftime('%Y-%m-%d', date) = strftime('%Y-%m-%d','now') AND room = ? group by HOUR order by HOUR asc",(room_no,))data = cursor.fetchall()data = list(zip(*data))data[1]然后将是['09:00','10:00','11:00',...]((data[0])房间)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python