проблема с массовым обновлением_объектов () - PullRequest
0 голосов
/ 14 мая 2018

Я собираюсь вставить / обновить объекты, используя bulk_save_objects().

Вставка в порядке, но когда будет выполнено обновление, она пытается обновить первичный ключ, который явно не былизменено.

Объект:

class MyObject(object):

    def __init__(self, id: int, f1: int, f2: int):
        self.id = id
        self.f1 = f1
        self.f2 = f2

Отображение:

my_table = Table('MyObject', metadata,
                 Column('Id', Integer, primary_key=True, autoincrement=True),
                 Column('F1', Integer),
                 Column('F2', Integer))

mapper(MyObject, my_table,
       properties={
           'id': my_table.c.Id,
           'f1': my_table.c.F1,
           'f2': my_table.c.F2
       })    

Репо:

def save_my_objects(self, my_objects: List[MyObject]):
    self.session.bulk_save_objects(my_objects, return_defaults=True)
    self.session.commit()

Логика:

my_objects = list()
my_objects.append(MyObject(None, 1, 2))

Repo.save_my_objects(my_objects)

my_objects[0].f1 = 15
Repo.save_my_objects(my_objects)  # Cannot update identity column 'Id'
...