Скажем, есть файл movie.py, который содержит определение таблицы для фильма и базы, например
# base.py
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
engine = create_engine('postgresql://usr:pass@localhost:5432/sqlalchemy')
Session = sessionmaker(bind=engine)
Base = declarative_base()
# move.py
from sqlalchemy import Column, String, Integer, Date
from base import Base
class Movie(Base):
__tablename__ = 'movies'
id = Column(Integer, primary_key=True)
title = Column(String)
release_date = Column(Date)
def __init__(self, title, release_date):
self.title = title
self.release_date = release_date
И вставить несколько запросов, таких как
# coding=utf-8
from datetime import date
from base import Session, engine, Base
from movie import Movie
# 2 - generate database schema
Base.metadata.create_all(engine)
# 3 - create a new session
session = Session()
# 4 - create movies
bourne_identity = Movie("The Bourne Identity", date(2002, 10, 11))
furious_7 = Movie("Furious 7", date(2015, 4, 2))
pain_and_gain = Movie("Pain & Gain", date(2013, 8, 23))
# 5 - persists data
session.add(bourne_identity)
session.add(furious_7)
session.add(pain_and_gain)
# 10 - commit and close session
session.commit()
session.close()
Есть ли способ восстановить старые данные, которые я вставил, если бы я получил новое определение для моей таблицы фильмов (добавьте больше столбцов в файл move.py)?