在运行时为 SQLAlchemy 的"加密类型"指定密钥



EncryptedType列类型的SQLAlchemy Utils文档中有一个类似于以下的示例:

secret_key = 'secretkey1234'
# setup
engine = create_engine('sqlite:///:memory:')
connection = engine.connect()
Base = declarative_base()

class User(Base):
__tablename__ = "user"
id = sa.Column(sa.Integer, primary_key=True)
username = sa.Column(EncryptedType(sa.Unicode,
secret_key,
AesEngine,
'pkcs5'))

但是,如果在定义User类之前我不知道密钥是什么呢?例如,如果我想提示用户输入密钥,该怎么办?

这是您链接到的文档中的最后一个示例:

键参数接受一个可调用的,以允许键更改而不是整张表的固定值。

def get_key():
return 'dynamic-key'
class User(Base):
__tablename__ = 'user'
id = sa.Column(sa.Integer, primary_key=True)
username = sa.Column(EncryptedType(
sa.Unicode, get_key))

最新更新