Diciamo che ho due tipi differenti entrambi sulla stessa tabella di database (sola tabella di successione):SQLAlchemy: Convertire tipo ereditato da uno all'altro
class Employee(db.Model):
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String, nullable = False)
discriminator = db.Column('type', String)
__mapper_args__ = {'polymorphic_on': discriminator}
class Manager(Employee):
__mapper_args__ = {'polymorphic_identity': 'manager'}
division = db.Column(db.String, nullable = False)
role = db.Column(db.String, nullable = False)
class Worker(Employee):
__mapper_args__ = {'polymorphic_identity': 'worker'}
title = db.Column(db.String, nullable = False)
(Sì, sto usando Flask-SQLAlchemy e non plain vanilla) Ora, come potrei fare per convertire un modello dichiarativo in un altro. Cioè, cosa succede se un "Lavoratore" è stato promosso a "Manager?" Come lo faccio? Devo scrivere SQL raw per farlo?
Scusate se questo è stato chiesto prima, ma non sono riuscito a trovare dal Googles. Si prega di notare, questo è un esempio forzato.
Penso piuttosto che scrivere SQL nuda, basta creare un'istanza di Manager e copiare tutte le proprietà pertinenti, quindi eliminare il Worker originale. Ma potrebbe essere difficile a seconda di quante chiavi esterne sono coinvolte. – Hannele