数据库迁移操作 — Django 文档
来自菜鸟教程
Django/docs/3.1.x/ref/contrib/postgres/operations
数据库迁移操作
所有这些 操作 都可以从 django.contrib.postgres.operations
模块获得。
使用迁移创建扩展
您可以使用迁移文件在数据库中创建 PostgreSQL 扩展。 此示例创建了一个 hstore 扩展,但相同的原则适用于其他扩展。
通过添加带有 HStoreExtension 操作的迁移,在涉及 HStoreField 的第一个 CreateModel
或 AddField
操作之前在 PostgreSQL 中设置 hstore 扩展。 例如:
from django.contrib.postgres.operations import HStoreExtension
class Migration(migrations.Migration):
...
operations = [
HStoreExtension(),
...
]
对于大多数扩展,这需要具有超级用户权限的数据库用户。 如果 Django 数据库用户没有适当的权限,则必须在 Django 迁移之外使用拥有权限的用户创建扩展。 在这种情况下,连接到您的 Django 数据库并运行查询 CREATE EXTENSION IF NOT EXISTS hstore;
。
CreateExtension
- class CreateExtension(name)
- 安装 PostgreSQL 扩展的
Operation
子类。 对于常见扩展,请使用以下更具体的子类之一。
- name
- 这是一个必需的参数。 要安装的扩展名。
BloomExtension
- class BloomExtension
3.1 版中的新功能。
安装
bloom
扩展。
BtreeGinExtension
- class BtreeGinExtension
- 安装
btree_gin
扩展。
BtreeGistExtension
- class BtreeGistExtension
- 安装
btree_gist
扩展。
CITextExtension
- class CITextExtension
- 安装
citext
扩展。
CryptoExtension
- class CryptoExtension
- 安装
pgcrypto
扩展。
HStoreExtension
- class HStoreExtension
- 安装
hstore
扩展并设置连接以解释 hstore 数据,以便在后续迁移中可能使用。
TrigramExtension
- class TrigramExtension
- 安装
pg_trgm
扩展。
UnaccentExtension
- class UnaccentExtension
- 安装
unaccent
扩展。
并发索引操作
3.0 版中的新功能。
PostgreSQL 支持 CREATE INDEX
和 DROP INDEX
语句的 CONCURRENTLY
选项来添加和删除索引而不锁定写入。 此选项对于在实时生产数据库中添加或删除索引很有用。
- class AddIndexConcurrently(model_name, index)
- 类似于 AddIndex,但使用
CONCURRENTLY
选项创建索引。 使用此选项时需要注意一些注意事项,请参阅 并发构建索引的 PostgreSQL 文档 。
- class RemoveIndexConcurrently(model_name, name)
- 类似于 RemoveIndex,但使用
CONCURRENTLY
选项删除索引。 使用此选项时需要注意一些注意事项,请参阅 PostgreSQL 文档 。