Code: Alles auswählen
obj2 = obj1.duplicate()
Mein Problem mit der Doku hierbei ist, dass ich zu der Basisklasse (declarative_base()) keine Doku finden kann.
Code: Alles auswählen
obj2 = obj1.duplicate()
Code: Alles auswählen
def duplicate(self):
arguments = dict()
for name, column in self.__mapper__.columns.items():
if not (column.primary_key or column.unique):
arguments[name] = getattr(self, name)
return self.__class__(**arguments)
Auf der sqlalchemy-Liste wurde auch dieser Vorschlag gemachtBlackJack hat geschrieben:Völlig ungetestet:Code: Alles auswählen
def duplicate(self): arguments = dict() for name, column in self.__mapper__.columns.items(): if not (column.primary_key or column.unique): arguments[name] = getattr(self, name) return self.__class__(**arguments)
Code: Alles auswählen
from sqlalchemy import inspect
mapper = inspect(MyClass)
new_obj = MyClass()
for attr in mapper.attrs:
setattr(new_obj, attr.key, getattr(old_obj, attr.key))