提供一种在多个数据库的迁移中运行原始SQL的方法
django-migrations-plus的Python项目详细描述
migrations plus提供了一种在具有多个数据库连接的django迁移中运行原始sql的方法。
安装
使用pip:
$ pip install django-migrations-plus
API
RunSQL(sql, reverse_sql=None, state_operations=None, db='default')
允许在数据库上运行任意SQL—对于Django不直接支持的数据库后端(如部分索引)的更高级功能非常有用。
sql和reverse_sql(如果提供)应该是要在数据库上运行的sql字符串。在大多数数据库后端(除了postgresql之外),django会在执行之前将sql拆分成单独的语句。这需要安装sqlparse python库。
state_operations参数用于提供与sql在项目状态方面等效的操作;例如,如果手动创建列,则应在此处传入包含addfield操作的列表,以便autodetector仍然具有模型的最新状态(否则,下次运行makemigrations时,它将看不到任何添加该字段的操作,因此将尝试再次运行该字段)。
db应该是一个字符串,其中包含要在其上运行sql的设置中的连接名称。
示例
fromdjango.dbimportmigrationsimportmigrations_plusclassMigration(migrations.Migration):operations=[migrations_plus.RunSQL('DROP TABLE Students;')# Runs only against connection 'default'migrations_plus.RunSQL('DROP TABLE OtherStudents;',db='other')# Runs only against connection 'other']