Utilizzo la base dichiarativa SQLAlchemy per definire il modello. Ho definito una proprietà name
che viene calcolato da una delle colonne (title
):SQLAlchemy: proprietà personalizzata della query basata sul campo della tabella
class Entry(Base):
__tablename__ = "blog_entry"
id = Column(Integer, primary_key=True)
title = Column(Unicode(255))
...
@property
def name(self):
return re.sub(r'[^a-zA-Z0-9 ]','',self.title).replace(' ','-').lower()
Quando si tenta di eseguire una query utilizzando name
, SQLAlchemy genera un errore:
Session.query(Entry).filter(Entry.name == my_name).first()
>>> ArgumentError: filter() argument must be of type sqlalchemy.sql.ClauseElement or string
Dopo aver esaminato per un po, Ho trovato che forse comparable_using()
potrebbe aiutare, ma non ho trovato alcun esempio che mostri un comparatore che faccia riferimento a un'altra colonna della tabella.
È ancora possibile o esiste un approccio migliore?
Grazie, ora vedo che devo provare un approccio diverso. – amercader