Jeśli jest zdefiniowany model pyramid z mapowniaem do bazy danych dla klasy w sqlalchemy to instancje tworzy się przez:
zmiennaA = NazwaKlasy(zmienna1=wartość, zmienna2=wartość)
potem zapisać ją można w sesji:
DBSession.add(zmiennaA)
DBSession.commit()
co wprowadza ją trwale do bazy danych.
Czasami jednak nie można zainicjować zmiennejA ze wszystkimi wartościami atrybutów lub trzeba je utworzyć dynamicznie.
Wtedy można zainicjować instancję:
zmiennaA = NazwaKlasy()
i dalej zmienić jej artrybuty.
Problem w tym że sqlalchemy zignoruje te modyfikacje i zapisze do bazy danych pusty rekord, beż żadnej wartości (poza domyślnymi).
Można jednak wykorzystać setattr():
setattr(zmiennaA, zmienna1, wartość)
i wtedy wartości zmienionych atrybutów będą zapisane do bazy danych.