Я работаю с базой данных SQLAlchemy.
У меня есть простая схема со столбцами id
, data
и timestamp
.Столбец timestamp
автоматически заполняется текущей датой / временем следующим образом:
Column('timestamp', DateTime, nullable=False, default=datetime.now)
Я хочу добавить еще один столбец, содержащий контрольную сумму SHA-1 столбца data
.Что-то вроде:
# notice this is INVALID CODE
Column('checksum', String, nullable=False, unique=True,
default=hashlib.sha1(this_table.data).hexdigest())
Есть какие-нибудь предложения?
Спасибо.
Редактировать:
Самое близкое, к чему я пришел, этоуправлять «автоматизацией» на уровне объекта (в отличие от уровня таблицы).Я просто определяю столбец checksum
как
Column('checksum', String, nullable=False, unique=True)
и изменяю конструктор объекта, сопоставленного с этой таблицей, следующим образом:
def __init__(self, data):
self.data = data
self.checksum = hashlib.sha1(self.data).hexdigest()
Он работает, как и ожидалось, но мне все еще интересноесть способ сделать это на уровне таблицы (как в timestamp
, где я ничего не делаю на уровне объекта, но правильно назначаю текущую дату / время)