一架梯子,一头程序猿,仰望星空!
Milvus向量数据库教程 > 内容正文

Python Milvus数据库管理


管理数据库

与传统的数据库引擎类似,您也可以在Milvus中创建数据库,并为特定用户分配权限来管理它们。然后这些用户有权管理数据库中的集合。Milvus集群支持最多64个数据库。

创建数据库

要创建数据库,您需要首先连接到Milvus集群,并准备一个名称:

from pymilvus import connections, db

conn = connections.connect(host="127.0.0.1", port=19530)

database = db.create_database("book")

使用数据库

Milvus集群附带了一个默认数据库,名为”default”。除非另有指定,否则集合将在默认数据库中创建。

要更改默认数据库,请按照以下步骤操作:

db.using_database("book")

您还可以在连接到Milvus集群时设置要使用的数据库,示例如下:

conn = connections.connect(
    host="127.0.0.1",
    port="19530",
    db_name="default"
)

列出数据库

要查找Milvus集群中所有现有的数据库,请按照以下步骤操作:

db.list_database()

['default', 'book']

删除数据库

要删除数据库,您必须先删除其所有集合。否则,删除将失败。

db.drop_database("book")

db.list_database()

['default']

使用数据库的RBAC

RBAC也涵盖了数据库操作,并确保向前兼容性。在Permission API(Grant / Revoke / List Grant)中,database一词具有以下含义:

  • 如果Milvus连接和Permission API调用都没有指定db_name,则database指代默认数据库。
  • 如果Milvus连接指定了db_name,但之后的Permission API调用没有指定,database指代在Milvus连接中指定名称的数据库。
  • 如果在Milvus连接上进行了Permission API调用,无论是否指定了db_namedatabase指代在Permission API调用中指定名称的数据库。

以下代码片段在下面列出的块之间共享。

from pymilvus import connections, Role

_HOST = '127.0.0.1'
_PORT = '19530'
_ROOT = "root"
_ROOT_PASSWORD = "Milvus"
_ROLE_NAME = "test_role"
_PRIVILEGE_INSERT = "插入"


def connect_to_milvus(db_name="default"):
    print(f"连接到Milvus\n")
    connections.connect(host=_HOST, port=_PORT, user=_ROOT, password=_ROOT_PASSWORD, db_name=db_name)
  • 如果Milvus连接和Permission API调用都没有指定db_name,则database指代默认数据库。
connect_to_milvus()
role = Role(_ROLE_NAME)
role.create()

connect_to_milvus()
role.grant("Collection", "*", _PRIVILEGE_INSERT)
print(role.list_grants())
print(role.list_grant("Collection", "*"))
role.revoke("Global", "*", _PRIVILEGE_INSERT)
  • 如果Milvus连接指定了db_name,但之后的Permission API调用没有指定,database指代在Milvus连接中指定名称的数据库。
connect_to_milvus(db_name="foo")
role.grant("Collection", "*", _PRIVILEGE_INSERT)
print(role.list_grants())
print(role.list_grant("Collection", "*"))
role.revoke("Global", "*", _PRIVILEGE_INSERT)
  • 如果在Milvus连接上进行了Permission API调用,无论是否指定了db_namedatabase指代在Permission API调用中指定名称的数据库。
db_name = "foo"
connect_to_milvus()
role.grant("Collection", "*", _PRIVILEGE_INSERT, db_name=db_name)
print(role.list_grants(db_name=db_name))
print(role.list_grant("Collection", "*", db_name=db_name))
role.revoke("Global", "*", _PRIVILEGE_INSERT, db_name=db_name)


关联主题