首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向sqlalchemy的现有类添加列

向sqlalchemy的现有类添加列
EN

Stack Overflow用户
提问于 2020-07-07 17:45:39
回答 2查看 215关注 0票数 0

我有一个生成唯一id的父类和一个具有用户名的子类。

代码语言:javascript
复制
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做到这一点?有什么例子会对你有帮助吗?

EN

回答 2

Stack Overflow用户

发布于 2020-07-07 23:31:33

请参阅here中SQLAlchemy文档的这一部分

虽然SQLAlchemy直接支持为模式构造发出CREATE和DROP语句,但是更改这些构造的能力(通常是通过alter语句以及其他特定于数据库的构造)超出了SQLAlchemy本身的范围。 SQLAlchemy项目为此提供了 迁移工具。

您可以按照下面的说明向Names - Alembic-Create a Migration Script类添加您选择的列

票数 0
EN

Stack Overflow用户

发布于 2020-07-08 14:17:04

根据sqlalchemy-migrate documentation的说法,use可以在迁移中对列使用createdrop方法。迁移脚本可能会像这样循环:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62772458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档