次の SQLAlchemy クラスを定義しています。
Base = sqlalchemy.ext.declarative.declarative_base()
class NSASecrets(Base):
__tablename__ = 'nsasecrets';
id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True);
text = sqlalchemy.Column(sqlalchemy.String);
author = sqlalchemy.Column(sqlalchemy.String);
今私がやりたいのは、次のようなロジックに応じて「作成者」フィールドをマスクできるようにすることです。
if (allowed):
nsasecrets = session.query(NSASecrets,**mask=False**);
else:
nsasecrets = session.query(NSASecrets,**mask=True**);
for nsasecret in nsasecrets:
print '{0} {1}'.format(author, text);
したがって、この「マスク」パラメーターに応じて、出力が False の場合は「John Smith」になり、出力がマスクされないか、出力がマスクされる場合は「J*** * *h」になります。明らかに、この印刷物でそれを行うことができましたが、問題は印刷物がコードの周りに散らばっており、制御された集中型の方法でこれを行う唯一の方法は、既にマスクされた値を持つ SQLAlchemy オブジェクトを作成することです。それで、これに対するよく知られた解決策はありますか?または、「クエリ」インターフェースをオーバーロードする独自のセッションマネージャーを作成する必要がありますか、それとも他の可能な解決策がありませんか?
ありがとう