J'utilise SQLAlchemy sous Flask. J'ai une table qui représente un mode dans lequel mon système peut être. J'ai aussi une table qui contient des listes d'élévations qui sont applicables à chaque mode. (Donc, c'est une relation plusieurs-à-plusieurs.) Dans le passé, quand j'ai ajouté un attribut (comme elevations
ici ScanModes
ici) à une classe mappée à une table, la cible était aussi une classe.Comment créer une relation avec une valeur sans classe dans SQLAlchemy?
-t-il plus judicieux d'envelopper les élévations dans une classe (et faire une table correspondante?) Donc je peux utiliser relationship
pour faire ScanModes.elevations
travail, ou devrais-je utiliser un query-enabled property? Je suis également ouvert à d'autres suggestions.
elevation_mode_table = db.Table('elevation_mode', db.metadata,
db.Column('scan_mode', db.String,
db.ForeignKey('scan_modes'),
nullable=False),
db.Column('elevation', db.Float,
nullable=False),
db.PrimaryKeyConstraint('scan_mode',
'elevation'))
class ScanModes(db.Model):
scan_mode = db.Column(db.String, primary_key=True)
elevations = ?
def __init__(self, scan_mode):
self.scan_mode = scan_mode
Merci. Je vais essayer ça dans la matinée. J'apprécie vraiment que vous venez sur le site et que vous souteniez les gens avec la bibliothèque! –
Je pense que ce n'est pas tout à fait ce que je cherchais; peut-être que ce que je veux n'est pas "SQLAlchemic" assez. J'imaginais que l'attribut 'elevations' pourrait simplement être une liste non dépliée de valeurs tirées de' elevation_mode_table'. Je suppose que la mise en cache est faite à l'intérieur de l'objet 'ElevationMode' ici, et c'est pourquoi c'est nécessaire? –
En ce moment, je peux réaliser la mise en cache et mon attribut comme une liste avec votre code (avec 'elevations' renommé' _elevations') plus en faisant 'elevations' une propriété dont getter retourne une liste extraite de l'attribut' _elevations'. –