【问题标题】:SqlAlchemy Migrate DeclarativeSqlAlchemy 迁移声明式
【发布时间】:2011-10-10 19:16:06
【问题描述】:

我已将 SqlAlchemy-Migrate tutorial 上的教程修改为我的 Pylons Pyramid 项目的声明性语法。我可以成功升级和降级,但我担心下面的Base.metadata.drop_all(migrate_engine) 命令。这是我的迁移文件:

from sqlalchemy import Column
from sqlalchemy.types import Integer, String, DateTime
from sqlalchemy.sql import func
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import scoped_session, sessionmaker

from zope.sqlalchemy import ZopeTransactionExtension

DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    email = Column(String(75), unique=True)
    fullname = Column(String(60))          
    password = Column(String(51))          
    last_login = Column(DateTime)          
    date_joined = Column(DateTime, default=func.now())

def upgrade(migrate_engine):
    # Upgrade operations go here. Don't create your own engine; bind migrate_engine
    # to your metadata
    Base.metadata.bind = migrate_engine
    Base.metadata.create_all(migrate_engine) # IS THIS DANGEROUS?

def downgrade(migrate_engine):
    # Operations to reverse the above upgrade go here.
    Base.metadata.bind = migrate_engine
    Base.metadata.drop_all(migrate_engine) # IS THIS DANGEROUS?

[编辑] 我的问题是如何单独创建表格。我不知道这是我的问题,直到问了足够多的错误问题,才得到正确的问题。

【问题讨论】:

    标签: python orm sqlalchemy pylons pyramid


    【解决方案1】:

    升级的正确解决方案是获取表并单独创建它,如下所示:

    def upgrade(migrate_engine):
        # Upgrade operations go here. Don't create your own engine; bind migrate_engine
        # to your metadata
        User.__table__.create(migrate_engine)
    

    并且,对于降级:

    def downgrade(migrate_engine):
        # Operations to reverse the above upgrade go here.
        User.__table__.drop(migrate_engine)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-04
      • 2015-09-01
      • 2018-09-09
      • 2012-10-19
      • 2012-06-13
      • 2021-07-14
      • 2020-07-23
      • 2014-12-02
      相关资源
      最近更新 更多