我定义了以下 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 对象。那么有什么众所周知的解决方案吗?或者我应该只创建自己的会话管理器来重载“查询”界面,还是我错过了一些其他可能的解决方案?
谢谢