Я работаю с базой данных SQLAlchemy.Автоматически добавлять контрольную сумму SHA-1 столбца в качестве другого столбца в таблице 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())
Любые предложения?
спасибо.
Edit:
Ближайший я пришел к этому является управление «автоматизации» на уровне объектов (в отличие от уровня стола). Я просто определить checksum
столбец как
Column('checksum', String, nullable=False, unique=True)
и изменить конструктор объекта отображается в этой таблице, как:
def __init__(self, data):
self.data = data
self.checksum = hashlib.sha1(self.data).hexdigest()
Он работает, как ожидалось, но я до сих пор интересно, если есть способ сделать это на уровне «таблицы» (как в timestamp
, где я ничего не делаю на уровне объекта, но правильно назначаю текущую дату/время)
Также возглавляет, что SqlAlchemy 0.7 имеет этот рефакторинг в полную базу событий, и вы можете проверить это: http://www.sqlalchemy.org/docs/orm/events.html – Rick
Очень полезное расширение - большое спасибо! – Escualo