шифровать данные в PostgreSQL с помощью ORM - PullRequest
0 голосов
/ 18 февраля 2019

Я хочу зашифровать данные в PostgreSQL.Я использую следующие два метода для вставки данных, один с использованием ORM, другой без ORM

db = sql.create_engine(connection_string)
metadata = sql.schema.MetaData(bind=db, reflect=True)
inputStringtable = sql.Table('person_info', metadata, autoload=True)

######Using ORM########
class RowInputString(object):
    pass
orm.Mapper(RowInputString, inputStringtable)
Sess = orm.sessionmaker(bind=db)
session = Sess()

inputTable = RowInputString()
inputTable.person_id = personId
inputTable.person_name = personName
session.add(inputTable)
session.commit()
################################

######not using ORM
def inserting_data(personId, personName):
    insertData = inputStringtable.insert().values(person_id=personId, person_name=personName)
    conn = db.connect()
    conn.execute(ins)
inserting_data(personId, personName)

Я наткнулся на приведенный ниже фрагмент кода для шифрования и отправил его в базу данных:

INSERT INTO users(login, passwd)
VALUES('my_login', crypt('my_password', gen_salt('md5')));

Мне немного трудно использовать этот фрагмент в моем коде?

1 Ответ

0 голосов
/ 18 февраля 2019

Для общего шифрования вы можете использовать тип SQLAlchemy EncryptedType.

Для хеширования пароля вы можете определить пользовательский тип в SQLAlchemy:

https://github.com/sqlalchemy/sqlalchemy/wiki/DatabaseCrypt

При этом используется bind_expression API TypeDecorator для сопоставления переданного значения столбца с выражением, включающим встроенные функции базы данных (gen_salt и crypt).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...