Sqlalchemy SQL炼金术和生成ALTER TABLE语句
我想在SQL Alchemy中以编程方式生成Sqlalchemy SQL炼金术和生成ALTER TABLE语句,sqlalchemy,Sqlalchemy,我想在SQL Alchemy中以编程方式生成ALTER TABLE语句,以便向表中添加一个新列。要添加的列应采用现有映射类的定义 因此,给定一个SQL Alchemy列实例,我可以生成ALTER TABLE所需的SQL模式定义吗。。。添加列…和创建索引… 我在Python提示符下玩过游戏,能够看到我要查找的数据的可读描述: >>> DBChain.__table__.c.rName Column('rName', String(length=40, convert_unicod
ALTER TABLE
语句,以便向表中添加一个新列。要添加的列应采用现有映射类的定义
因此,给定一个SQL Alchemy列
实例,我可以生成ALTER TABLE所需的SQL模式定义吗。。。添加列…
和创建索引…
我在Python提示符下玩过游戏,能够看到我要查找的数据的可读描述:
>>> DBChain.__table__.c.rName
Column('rName', String(length=40, convert_unicode=False, assert_unicode=None, unicode_error=None, _warn_on_bytestring=False), table=<Chain>)
我听说过,但这似乎是围绕静态更改构建的,我希望动态生成模式更改
(我不想为这种设计辩护,我只是想寻找一种可以移植的方式来向现有表中添加列。)在跟踪
引擎之后。使用create_all()
我发现了一个可能的答案:
>>> engine.dialect.ddl_compiler(
... engine.dialect,
... DBChain.__table__.c.rName ) \
... .get_column_specification(
... DBChain.__table__.c.rName )
'"rName" VARCHAR(40)'
可以使用以下方法创建索引:
sColumnElement = DBChain.__table__.c.rName
if sColumnElement.index:
sIndex = sa.schema.Index(
"ix_%s_%s" % (rTableName, sColumnElement.name),
sColumnElement,
unique=sColumnElement.unique)
sIndex.create(engine)
您应该正确迁移数据库内容:
flask db stamp head
flask db migrate
flask db upgrade
什么是flask?哎呀,我还以为你在考虑flask框架呢
flask db stamp head
flask db migrate
flask db upgrade