Сохранение столбцов из таблицы SQL в массив с использованием Python - PullRequest
1 голос
/ 07 мая 2020

Я пытаюсь извлечь данные из моей базы данных и поместить их в формат, в котором они могут отображаться на диаграмме. js. Я использую python, а моя база данных использует sqlite3. Мне удалось вытащить необходимые значения из таблицы и распечатать их в формате таблицы, чтобы проверить, но я не уверен, где go отсюда.

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,...]

Есть предложения?

1 Ответ

1 голос
/ 07 мая 2020

Вы можете использовать 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]) будет комната)

...