我有一个生成唯一id的父类和一个具有用户名的子类。
class Ids(object):
id = Column(Integer, Sequence('res_id_seq'), primary_key=True)
class Names(Ids, base):
username = Column(String(50))
# I have created an sqlite db and persisting using sqlalchemy
engine = create_engine('sqlite:///emp.db', echo=True)
base.metadata.create_all(engine)我想给名字(lastname)添加一列。我如何使用sqlalchemy-migrate做到这一点?有什么例子会对你有帮助吗?
发布于 2020-07-07 23:31:33
请参阅here中SQLAlchemy文档的这一部分
虽然SQLAlchemy直接支持为模式构造发出CREATE和DROP语句,但是更改这些构造的能力(通常是通过alter语句以及其他特定于数据库的构造)超出了SQLAlchemy本身的范围。 SQLAlchemy项目为此提供了 迁移工具。
您可以按照下面的说明向Names - Alembic-Create a Migration Script类添加您选择的列
发布于 2020-07-08 14:17:04
根据sqlalchemy-migrate documentation的说法,use可以在迁移中对列使用create和drop方法。迁移脚本可能会像这样循环:
from sqlalchemy import Column, Integer, MetaData, String, Table
metadata = MetaData()
# Note that here you use Table instance
# not the class derived from sqlalchemy.ext.declarative.declarative_base
names = Table(
'names',
metadata,
# You need to specify only primary key column
# if you just adding a new column in this script
Column('id', Integer, primary_key=True),
)
lastname = Column('lastname', String(50))
def upgrade(migrate_engine):
metadata.bind = migrate_engine
lastname.create(names)
def downgrade(migrate_engine):
metadata.bind = migrate_engine
names.append_column(lastname)
names.c.lastname.drop()关于创建迁移脚本的More。
https://stackoverflow.com/questions/62772458
复制相似问题