草庐IT

python - alembic - 使用包资源作为 script_location 的示例

我正在尝试将Alembic迁移作为python包分发的一部分。由于将安装此发行版,Alembic脚本目录(包含迁移)最终将被复制到python包文件夹。在这种情况下,我如何告诉Alembic在哪里可以找到这个目录?在Alembic文档中,它说migration目录可以在config.ini文件中指定为包引用:script_location-thisisthelocationoftheAlembicenvironment.Itisnormallyspecifiedasafilesystemlocation,eitherrelativeorabsolute.Ifthelocationisa

python - 对 alembic.ini 使用不同的 .ini 文件

我正在尝试为我的Pyramid项目配置SQLAlchemyAlembic,我想使用我的developement.ini(或production.ini)来配置Alembic。是否可以指定我希望在Alembic中的任何位置使用的.ini文件? 最佳答案 运行alembic命令时只需指定alembic-c/some/path/to/another.ini。您甚至可以将[alembic]部分放在您的development.ini和production.ini文件中,而只是alembic-cproduction.iniupgradehead

python - 无法使用 Flask-Migrate (Alembic) 迁移或升级数据库

我一直在使用Flask-Migrate(Alembic)来更新我的数据库。我更新了我的models.py文件,但我犯了一个错误。我运行了一个迁移并去升级数据库,但是我得到了这个错误:sqlalchemy.exc.IntegrityError:(_mysql_exceptions.IntegrityError)(1215,'Cannotaddforeignkeyconstraint')[SQL:u'\nCREATETABLEtopics(\n\tidINTEGERNOTNULLAUTO_INCREMENT,\n\t`subjectID`INTEGER,\n\ttopicVARCHAR(1

python - 如何在 Alembic/SQLAlchemy 中使用 USING 子句?

我想使用Alembic将数据库的列类型从字符串更改为整数。如果我使用纯SQL,它可以实现目标:altertablestatistic_ticketaltercolumntagstypebigintusingtags::bigint;但是当我像这样使用Alembic时:importsqlalchemyassadefupgrade():op.alter_column('statistic_ticket','tags',nullable=True,existing_type=sa.String(length=255),type_=sa.Integer,existing_nullable=Tr

python - 请求自动生成迁移的简单 alembic 工作示例

我从我的ubuntu安装了alembic0.3.4、sqlalchemy、SQLite版本3.7.4,并将SQLAlchemy0.6.4升级到SQLAlchemy0.7或更高版本。我关注了theinstructionslinkedhere:现在我正在测试:自动生成迁移我创建了一个包:模式,并在模式下创建了一个包标记:init.py定义一行:__all__=["teacher"]我还在schemas目录中创建了一个模块文件:dbmodel.py,内容如下Base=declarative_base()classteacher(Base):__tablename__='teacher'id=

python - Alembic + Sqlalchemy 多列唯一约束

我正在尝试使用sqlalchemy创建一个多列唯一约束,Alembic会在其自动升级脚本生成器中选取该约束。我已经使用以下方法创建约束:在我的模型中从sqlalchemyimportUniqueConstraintUniqueConstraint('col1','col2','number',name='uix_table_col1_col2_col3')但是,Alembic不会在其自动脚本生成中使用它。我可以通过添加在Alembic脚本中手动创建它。op.create_unique_constraint('uq_table_col1_col2_col3','table',['col1

python - 如何在 alembic 中使用 alter_column?

我正在用alembic编写迁移,但对我来说似乎不可能将server_defaults的值从有值变为无值。我的代码:op.alter_column("foo",sa.Column("bar",sa.DateTime(timezone=False),server_default=None,nullable=True))如果我在迁移后检查默认值仍然是NOW() 最佳答案 要从Alembic0.9.5开始重命名列,我必须将迁移更改为如下所示:op.alter_column('my_table','old_col_name',nullable

python - Alembic - sqlalchemy 不检测现有表

我问了一个问题(Alembic-sqlalchemyinitialmigration)关于如何使用检测表target_metadata=Base.metadata对于alembicrevision--autogenerate-m"initialmigration"在我将我的模型导入env.py文件后,它似乎工作正常,但它没有检测到实际存在的表,因此它创建了一个包含所有表的迁移文件,例如:defupgrade():###commandsautogeneratedbyAlembic-pleaseadjust!###op.create_table('Brand',sa.Column('id'

python - 使用 alembic 获取表值并更新到另一个表。

我在client表中有oauthsecret和oauthkey。现在我将它们移动到将在迁移期间创建的oauthcredentials表中。Alembic生成了以下升级模式。frommyapp.modelsimportClient,ClientCredentialfromalembicimportopimportsqlalchemyassadefupgrade():###commandsautogeneratedbyAlembic-pleaseadjust!###op.create_table('client_credential',sa.Column('id',sa.Integer()

python - 使用 Alembic 更改枚举字段

当使用早于9.1的PostgreSQL版本(为枚举添加ALTERTYPE)时,如何在alembic迁移中将元素添加到Enum字段?ThisSOquestion解释了直接过程,但我不太确定如何最好地使用alembic进行翻译。这就是我所拥有的:new_type=sa.Enum('nonexistent_executable','output_limit_exceeded','signal','success','timed_out',name='status')old_type=sa.Enum('nonexistent_executable','signal','success','ti