Цикл для объединения результатов SQL - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь создать функцию, которая принимает список 'groups', выполняет SQL-запрос, извлекая результаты для каждой команды, используя цикл for, возвращает результаты в соответствующие поля в фрейме данных и затем объединяет сторону данныхая сторона.Поэтому в идеале результаты должны выглядеть примерно так:

enter image description here

Приведенный ниже код выдает ошибку: у объекта "list" нет атрибута "concat«».Может кто-нибудь посоветовать, пожалуйста, как мне добиться желаемого результата?

Спасибо!

teams = ['Chicago','Orlando','Miami','New York']

class Team:
    Date = datetime(1900,1,1)
    Pts_Scored = 0

def myfunct(conn, teams):
    curr = conn.cursor()
    pts_scored = []

    for t in teams:
        curr.execute("select date, pts_scored from db.teams where teams ='"+t+"'")
        for i in curr:
            point_hist = Team()
            point_hist.Date = i[1]
            point_hist.Pts_Scored = i[2]
            pts_scored.concat(point_hist)

1 Ответ

0 голосов
/ 13 ноября 2018

pts_scored должен быть словарем, ключами которого являются даты.Значения должны быть еще одним словарем, ключи которого являются именами команд, а значения - баллами.

def myfunct(conn, teams):
    curr = conn.cursor()
    pts_scored = {}

    curr.execute("select date, pts_scored, teams from db.teams")
    for i in curr:
        if i['teams'] in teams:
            if i['date'] not in pts_scored:
                pts_scores[i['date']] = {}
            point_hist[i['date']][i['teams'] = i['pts_scored']

Затем можно использовать вложенный цикл для печати таблицы:

# print heading
for team in teams:
    print("Date", team, end='')
print("")
# print results
for date, results in point_hist.items():
    for team in teams
        print(date, results[team], end='')
    print("")
...