Вставить или обновить, используя словарь - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь обновить значения, используя словарь. Мой user_id установлен. Я хочу update date_synced where user_id=user_id. Таблица пользователей выглядит следующим образом: User(user_id, mail, active, activity_level, date_synced).

Словарь dictUsers выглядит так:

[{'user_id': 1, 'date_synced': '2019-05-22 10:42:25'},
 {'user_id': 8, 'date_synced': '2019-05-22 10:42:25'}]

Что я пробовал:

sql = 'UPDATE User SET {}'.format(', '.join('{}'.format(k) for k in dictUsers))
conn.execute(sql, dictUsers.values())

Моя ошибка:

AttributeError: 'list' object has no attribute 'values'

Ожидаемый результат - date_synced обновлен в моей таблице User. Как я могу это сделать?

1 Ответ

0 голосов
/ 22 мая 2019

Попробуйте что-то вроде этого (из официальной документации ):

stmt = users.update().\
        values(name='ed wood').\
        where(users.c.id == addresses.c.id)
conn.execute(stmt)

В вашем случае это должно быть примерно так. Вы можете зациклить это по своему словарю для каждого пользователя:

stmt = user.update().\
        values(date_synced=dictUsers[i].date_synced).\
        where(user.c.user_id == dictUsers[i].user_id)
conn.execute(stmt)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...