Python Заявление об обновлении SqlAlchemy - PullRequest
0 голосов
/ 05 августа 2020

Может ли кто-нибудь помочь мне с этим заявлением об обновлении? Просто пытаюсь сохранить значение json как str в столбце в моей базе данных, но не проходит:

    new_bookmarks = {
        fitness_discipline: {effort: str([x for x in options if x['value'] in values]).replace("'", '"')}
    }

    session, engine = db_connect()
    athlete_bookmarks = session.query(athlete.peloton_auto_bookmark_ids).filter(
        athlete.athlete_id == 1).first().peloton_auto_bookmark_ids

    athlete_bookmarks_json = json.loads(athlete_bookmarks)
    athlete_bookmarks_json.update(new_bookmarks)

    athlete_bookmarks = json.dumps(athlete_bookmarks_json)

    session.commit()

    engine.dispose()
    session.close()

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Вы повторно назначаете переменную athlete_bookmarks, а не устанавливаете атрибут peloton_auto_bookmark_ids для спортсмена:

new_bookmarks = {
    fitness_discipline: {effort: str([x for x in options if x['value'] in values]).replace("'", '"')}
}

session, engine = db_connect()
athlete = session.query(athlete).filter(athlete.athlete_id == 1).first()

athlete_bookmarks_json = json.loads(athlete_bookmarks.peloton_auto_bookmark_ids)
athlete_bookmarks_json.update(new_bookmarks)
athlete_bookmarks.peloton_auto_bookmark_ids = json.dumps(athlete_bookmarks_json)

session.commit()
0 голосов
/ 06 августа 2020

Получил со следующим

    session, engine = db_connect()
    athlete_bookmarks = session.query(athlete.peloton_auto_bookmark_ids).filter(
        athlete.athlete_id == 1).first()

    # update peloton bookmark settings per the inputs
    athlete_bookmarks_json = json.loads(athlete_bookmarks.peloton_auto_bookmark_ids)

    # Check if fitness discipline exists
    if not athlete_bookmarks_json.get(fitness_discipline):
        athlete_bookmarks_json[fitness_discipline] = {}
    # Check if fitness discipline / effort exists
    if not athlete_bookmarks_json.get(fitness_discipline).get(effort):
        athlete_bookmarks_json[fitness_discipline][effort] = {}

    athlete_bookmarks_json[fitness_discipline][effort] = json.dumps([x for x in options if x['value'] in values])

    session.query(athlete.peloton_auto_bookmark_ids).filter(
        athlete.athlete_id == 1).update({athlete.peloton_auto_bookmark_ids: json.dumps(athlete_bookmarks_json)})

    # write back to database
    session.commit()

    engine.dispose()
    session.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...