数据库迁移操作Link to this heading
所有这些 操作 都可以从 django.contrib.postgres.operations 模块中获得。
使用迁移创建扩展Link to this heading
你可以使用迁移文件在数据库中创建一个 PostgreSQL 扩展。这个例子创建了一个 hstore 扩展,但同样的原理也适用于其他扩展。
在涉及到 HStoreField 的第一个 CreateModel 或 AddField 操作之前,通过添加 HStoreExtension 操作的迁移,在 PostgreSQL 中设置 hstore 扩展。例如:
from django.contrib.postgres.operations import HStoreExtension
class Migration(migrations.Migration):
...
operations = [
HStoreExtension(),
...
]
对于大多数扩展来说,这需要一个具有超级用户权限的数据库用户。如果 Django 数据库的用户没有相应的权限,你就必须在 Django 迁移之外用一个有权限的用户创建扩展。在这种情况下,连接到你的 Django 数据库,并运行查询 CREATE EXTENSION IF NOT EXISTS hstore;。
CreateExtensionLink to this heading
- class CreateExtension(name)Link to this definition
一个安装 PostgreSQL 扩展的
Operation子类。对于普通的扩展,请使用下面一个更具体的子类。- nameLink to this definition
这是一个必要的参数。要安装的扩展名。
BloomExtensionLink to this heading
- class BloomExtensionLink to this definition
-
安装
bloom扩展。
BtreeGinExtensionLink to this heading
- class BtreeGinExtensionLink to this definition
安装
btree_gin扩展。
BtreeGistExtensionLink to this heading
- class BtreeGistExtensionLink to this definition
安装
btree_gist扩展。
CITextExtensionLink to this heading
- class CITextExtensionLink to this definition
安装
citext扩展。
CryptoExtensionLink to this heading
- class CryptoExtensionLink to this definition
安装
pgcrypto扩展。
HStoreExtensionLink to this heading
- class HStoreExtensionLink to this definition
安装
hstore扩展,并设置连接来解释 hstore 数据,以便在后续迁移中使用。
TrigramExtensionLink to this heading
- class TrigramExtensionLink to this definition
安装
pg_trgm扩展。
UnaccentExtensionLink to this heading
- class UnaccentExtensionLink to this definition
安装
unaccent扩展。
并发索引操作Link to this heading
PostgreSQL 支持 CREATE INDEX 和 DROP INDEX 语句中的 CONCURRENTLY 选项,以增加和删除索引而不锁定写入。这个选项对于在实际生产的数据库中添加或删除索引非常有用。
- class AddIndexConcurrently(model_name, index)Link to this definition
就像
AddIndex一样,但是使用CONCURRENTLY选项创建索引。这在使用这个选项时有一些注意事项,参见 PostgreSQL 关于并发建立索引的文档 。
- class RemoveIndexConcurrently(model_name, name)Link to this definition
就像
RemoveIndex一样,但是使用CONCURRENTLY选项来删除索引。这在使用这个选项时有一些注意事项,请看 PostgreSQL 文档 。