在运行时为SQLAlchemy的“ EncryptedType”指定密钥

时间:2018-07-24 23:59:00

标签: sqlalchemy sqlalchemy-utils

SQLAlchemy-Utils documentation for the EncryptedType column type的示例看起来像这样:

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类之前不知道密钥是什么,该怎么办?例如,如果我想提示用户输入密钥怎么办?

1 个答案:

答案 0 :(得分:1)

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

  

key参数接受一个可调用项,以允许更改键   每行而不是固定整个表。

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))