sqlalchemy-migrateのscriptをどう書けばいいかいまいち悩む
sqlalchemyを使ったモデルをmigrateツール使ってバージョン管理しようとしているんだけど、いまいち。。。
SqlAlchemyを使って書いたモデルだと
lass Products(db.DbBase): __tablename__ = "dsc_products" __table_args__ = { "comment": "商品マスタ" } product_id = Column(String(20), primary_key=True, comment='商品ID') title = Column(String(300), nullable=False, comment='タイトル名') site_id = Column(String(10), nullable=False, comment='販売サイト区分') sale_date = Column(Date, nullable=False, comment='販売日(時刻切り捨て)') price = Column(Integer, nullable=False, comment='価格') created_at = Column(DateTime, nullable=False, default=datetime.now, comment='レコード作成日時') updated_at = Column(DateTime, nullable=False,default=datetime.now, onupdate=datetime.now, comment='レコード更新日時') genres = relationship('Genres', secondary=ProductGenre.__tablename__)
↑こんな感じで書いてるんだけど、
Sqlalchemy-migrateのscriptのほうだと、よく見る形が
meta = MetaData() table = Table( 'books', meta, Column('id', BIGINT(unsigned=True), primary_key=True), Column('title', TEXT, nullable=False), Column('author', VARCHAR(64), nullable=False), Column('created_at', DATETIME, nullable=False), Column('updated_at', DATETIME, nullable=False))
みたいで、Columnで書き方違うんだよなー
どうやって書けばいいんだろ?
普通のカラム名とか型だけならいいんだけど、デフォルト値は?server_defaultはテーブル定義に含まれるけど、defaultはinsert時に初期値が設定されるし定義ではないよね?
リレーション設定はモデルのほうには書くのかな?
せっかく、カラム名をリテラルで持たなくてもいい感じになってるのにバージョン管理でもつのもなぁ
うーん、実際どう書けばいいのかブレブレで自分の中でまとまってないかんじ。もう少し悩むか。。。