Я собираюсь написать скрипт на python, который поможет мне переносить данные между разными версиями одного и того же приложения.
Прежде чем я начну, я хотел бы знать, есть ли сценарий или модуль, который делает что-то подобное, и я могу либо использовать, либо использовать в качестве отправной точки для прокрутки, по крайней мере, своего собственного. Идея состоит в том, чтобы преобразовать данные между конкретными таблицами, а затем сохранить их как операторы SQL INSERT для применения к базе данных более ранней версии.
Примечание. Этот сценарий не является устойчивым к изменениям схемы
Обычно логика была бы чем-то вроде
def diff_table(table1, table2):
# return all rows in table 2 that are not in table1
pass
def persist_rows_tofile(rows, tablename):
# save rows to file
pass
dbnames=('db.v1', 'db.v2')
tables_to_process = ('foo', 'foobar')
for table in tables_to_process:
table1 = dbnames[0]+'.'+table
table2 = dbnames[1]+'.'+table
rows = diff_table(table1, table2)
if len(rows):
persist_rows_tofile(rows, table)
Это хороший способ написать такой скрипт или его можно улучшить? Я подозреваю, что это можно улучшить, кэшируя соединения с базой данных и т. Д. (Которые я пропустил - потому что я не слишком знаком с SqlAlchemy и т. Д.).
Какие-нибудь советы о том, как добавить SqlAlchemy и как вообще улучшить такой скрипт?