chcę sklonować obiektu sqlalchemy:Jak sklonować obiektu sqlalchemy dB nowego klucza podstawowego
Próbowałem go
product_obj = products.all()[0] #here products is service name
product_obj.product_uid = 'soemthing' #here product_uid is the pk of product model
products.save(product_obj)
jest tylko aktualizowanie old_object tylko
tutaj jest kod funkcji products.save:
class Service(object):
__model__ = None
def save(self, model):
self._isinstance(model)
db.session.add(model)
db.session.commit()
return model
Wydaje się dość irytujące, że make_transient nie usuwa klucz podstawowy. Czy nie ma to sensu, jeśli tworzenie kopii wpisu jest podstawowym przypadkiem użycia? – SebK
@SebK Chodzi o to, że możesz potrzebować kopii obiektu bez zmiany PK (z jakichkolwiek powodów). Zachowując PK, API jest bardziej wszechstronny, ponieważ łatwiej jest zmienić identyfikator, kiedy jest to potrzebne, niż utrzymywać referencję ID na wypadek, gdyby była potrzebna. –
Dzięki! Zauważa także, że newbees jak ja (1) znajduje make_transient w 'from sqlalchemy.orm.session import make_transient' oraz (2) ustawiając klucz podstawowy na None, użyje automatycznie generującego klucz podstawowy na' session.add (obj) 'i' session.commit() '. –