SQLAlchemy - Possiamo usare confronto data in definizione relazione?
-
24-09-2019 - |
Domanda
ho questo mapper definito:
mapper(Resource, resource_table,
properties = {'type' : relation(ResourceType,lazy = False),
'groups' : relation(Group, secondary = model.tables['resource_group'],
backref = 'resources'),
'parent' : relation(Relation, uselist=False, primaryjoin =
and_(relation_table.c.res_id == resource_table.c.res_id,
relation_table.c.end_date > datetime.now())),
'children' : relation(Relation, primaryjoin =
and_(relation_table.c.parent_id == resource_table.c.res_id,
relation_table.c.end_date > func.now()))})
Ma per qualche ragione, se creo una nuova riga nella tabella relazione e cambiare l'end_date della vecchia riga della relazione a una vecchia data, il genitore proprietà non è aggiornato. Anche se una ricarica la linea delle risorse, viene visualizzato il vecchio rapporto con la vecchia data, quindi sono abbastanza sicuro che ha a che fare con il confronto data nel mapper.
Se si sostituisce l'end_date da una stringa colonna di bandiera o intero e fare un confronto sulla bandiera ottengo il comportamento corretto, ma io voglio date di utilizzo.
Ogni aiuto è benvenuto.
Grazie,
Richard Lopes
Soluzione
Ho effettivamente trovato cosa non andava. La relazione è effettivamente lavorando. Il problema è stato risolto impostando l'end_date a qualcosa come datetime.now () - 1 secondo, così accade prima che la risorsa è in realtà rinfrescato dal SQLAlchemy. A millisecondi emettere suppongo.
Richard Lopes