使用sqlalchemy和ORM将数据加密到Postgres中并从Postgres中解密

时间:2019-02-22 05:35:12

标签: python postgresql encryption sqlalchemy sqlalchemy-utils

我想将数据加密成Postgres,然后解密并从中读取。我更喜欢使用sqlalchemy和ORM,但是如果很难使用sqlalchemy和ORM,那么我很好奇也知道其他方式

我尝试使用下面的代码,它正在加密到数据库中,但没有要求我提供任何密钥或解密内容。我可以知道为什么吗?

import sqlalchemy as sa
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

from sqlalchemy_utils import EncryptedType
from sqlalchemy_utils.types.encrypted.encrypted_type import AesEngine

secret_key = 'secretkey1234'
connection_string = '***********'
engine = create_engine(connection_string)
connection = engine.connect()
sa.orm.configure_mappers()
Session = sessionmaker(bind=connection)
session = Session()
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'))
    number_of_accounts = sa.Column(EncryptedType(sa.Integer,secret_key,AesEngine,'oneandzeroes'))
Base.metadata.create_all(connection)

我运行以下代码进行解密:

user_id = user.id
session.expunge_all()
user_instance = session.query(User).get(user_id)
print('username: {}'.format(user_instance.username))

0 个答案:

没有答案