SQLAlchemy – обновить таблицу с помощью setattr, даже если столбец не существует в таблицеPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 SQLAlchemy – обновить таблицу с помощью setattr, даже если столбец не существует в таблице

Сообщение Anonymous »

У меня есть приложение Flask с базой данных, которая выглядит так:

Код: Выделить всё

class Talk(db.Model):
__tablename__ = 'talk'

talkId = db.Column(db.String, primary_key=True)
_id = db.Column(db.String)
talkName = db.Column(db.String)
talkOrigin = db.Column(db.String)

def __repr__(self):
return f'Talk talkId - {self.talkId}'

def __init__(self, **kwargs):
self.__dict__.update(kwargs)
Я получаю объекты json, с помощью которых мне нужно вставить/обновить таблицу. Для пути обновления я делаю

Код: Выделить всё

def process_update(update_obj):
talk_res = db.session.query(Talk).get(update_obj['talkId'])
if talk_res:
for key, value in talk_res.items():
try:
setattr(talk_res, key, value)
except Exception as exe:
current_app.logger.error(
f'Exception {exe} during update'
)
db.session.rollback()
Теперь, если этот update_obj json содержит атрибут, который не сопоставлен со столбцом в моей таблице, эта функция выдает исключение

Код: Выделить всё

Exception 'someGarbage' is an invalid keyword argument for Talk
Есть ли способ обновить только те столбцы, которые существуют в таблице?

Подробнее здесь: https://stackoverflow.com/questions/790 ... t-in-table
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»