Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support database cli #36

Merged
merged 1 commit into from
Aug 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 51 additions & 54 deletions milvus_cli/Connection.py
Original file line number Diff line number Diff line change
@@ -1,58 +1,55 @@
from pymilvus import connections,list_collections
from pymilvus import connections, list_collections
from Types import ConnectException


class MilvusConnection(object):
uri = "127.0.0.1:19530"
alias = "default"

def connect(self,
alias='',
uri=None,
username=None,
password=None):
self.alias = alias
self.uri = uri
trimUsername = None if username is None else username.strip()
trimPwd = None if password is None else password.strip()

try:
res = connections.connect(alias= self.alias,
uri=self.uri,
user=trimUsername,
password=trimPwd
)
return res
except Exception as e:
raise ConnectException(f"Connect to Milvus error!{str(e)}")

def checkConnection(self,alias=None):
try:
tempAlias = alias if alias else self.alias
collections = list_collections(timeout=10.0, using=tempAlias)
return collections
except Exception as e:
raise ConnectException(f"Connect to Milvus error!{str(e)}")

def showConnection(self, alias=None, showAll=False):
tempAlias = alias if alias else self.alias
allConnections = connections.list_connections()

if showAll:
return allConnections;

aliasList = map(lambda x: x[0], allConnections)

if tempAlias in aliasList:
response = connections.get_connection_addr(tempAlias).values()
return response
else:
return "Connection not found!"

def disconnect(self,alias=None):
tempAlias = alias if alias else self.alias
try:
connections.disconnect(alias=tempAlias)
return f"Disconnect from {tempAlias} successfully!"
except Exception as e:
raise f"Disconnect from {tempAlias} error!{str(e)}"
uri = "127.0.0.1:19530"
alias = "default"

def connect(self, alias="", uri=None, username=None, password=None):
self.alias = alias
self.uri = uri
trimUsername = None if username is None else username.strip()
trimPwd = None if password is None else password.strip()

try:
res = connections.connect(
alias=self.alias, uri=self.uri, user=trimUsername, password=trimPwd
)
return res
except Exception as e:
raise ConnectException(f"Connect to Milvus error!{str(e)}")

def checkConnection(self, alias=None):
try:
tempAlias = alias if alias else self.alias
collections = list_collections(timeout=10.0, using=tempAlias)
return collections
except Exception as e:
raise ConnectException(f"Connect to Milvus error!{str(e)}")

def showConnection(self, alias=None, showAll=False):
tempAlias = alias if alias else self.alias
try:
allConnections = connections.list_connections()

if showAll:
return allConnections

aliasList = map(lambda x: x[0], allConnections)

if tempAlias in aliasList:
response = connections.get_connection_addr(tempAlias).values()
return response
else:
return "Connection not found!"
except Exception as e:
raise Exception(f"Show connection error!{str(e)}")

def disconnect(self, alias=None):
tempAlias = alias if alias else self.alias
try:
connections.disconnect(alias=tempAlias)
return f"Disconnect from {tempAlias} successfully!"
except Exception as e:
raise Exception(f"Disconnect from {tempAlias} error!{str(e)}")
68 changes: 35 additions & 33 deletions milvus_cli/Database.py
Original file line number Diff line number Diff line change
@@ -1,35 +1,37 @@
from pymilvus import db

class MilvusDatabase():
alias = "default"
def create_database(self,dbName=None,alias=None):
tempAlias = alias if alias else self.alias
try:
db.create_database(db_name=dbName,using=tempAlias)
return f"Create database {dbName} successfully!"
except Exception as e:
raise f"Create database error!{str(e)}"

def list_databases(self,alias=None):
tempAlias = alias if alias else self.alias
try:
res = db.list_database(using=tempAlias)
return res
except Exception as e:
raise f"List database error!{str(e)}"

def drop_database(self,dbName=None,alias=None):
tempAlias = alias if alias else self.alias
try:
db.drop_database(db_name=dbName,using=tempAlias)
return f"Drop database {dbName} successfully!"
except Exception as e:
raise f"Drop database error!{str(e)}"

def using_database(self,dbName=None,alias=None):
tempAlias = alias if alias else self.alias
try:
db.using_database(db_name=dbName,using=tempAlias)
return f"Using database {dbName} successfully!"
except Exception as e:
raise f"Using database error!{str(e)}"

class MilvusDatabase:
alias = "default"

def create_database(self, dbName=None, alias=None):
tempAlias = alias if alias else self.alias
try:
db.create_database(db_name=dbName, using=tempAlias)
return f"Create database {dbName} successfully!"
except Exception as e:
raise Exception(f"Create database error!{str(e)}")

def list_databases(self, alias=None):
tempAlias = alias if alias else self.alias
try:
res = db.list_database(using=tempAlias)
return res
except Exception as e:
raise Exception(f"List database error!{str(e)}")

def drop_database(self, dbName=None, alias=None):
tempAlias = alias if alias else self.alias
try:
db.drop_database(db_name=dbName, using=tempAlias)
return f"Drop database {dbName} successfully!"
except Exception as e:
raise Exception(f"Drop database error!{str(e)}")

def using_database(self, dbName=None, alias=None):
tempAlias = alias if alias else self.alias
try:
db.using_database(db_name=dbName, using=tempAlias)
return f"Using database {dbName} successfully!"
except Exception as e:
raise Exception(f"Using database error!{str(e)}")
136 changes: 136 additions & 0 deletions milvus_cli/scripts/database_cli.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
from tabulate import tabulate
from helper_cli import create, getList, delete
from init_cli import cli
import click


@create.command("database")
@click.option(
"-db",
"--db_name",
"db_name",
help="Database name.",
required=True,
type=str,
)
@click.option(
"-a",
"--alias",
"alias",
help="The connection alias name.",
type=str,
)
@click.pass_obj
def create_database(obj, db_name=None, alias=None):
"""
Create database.

Example:

milvus_cli > create database -db testdb -a default
"""
try:
res = obj.database.create_database(db_name, alias)
except Exception as e:
click.echo(message=e, err=True)
else:
click.echo(res)


@getList.command("databases")
@click.option(
"-a",
"--alias",
"alias",
help="The connection alias name.",
type=str,
)
@click.pass_obj
def list_databases(obj, alias=None):
"""
List databases.

Example:

milvus_cli > list databases -a default
"""
try:
res = obj.database.list_databases(alias)
except Exception as e:
click.echo(message=e, err=True)
else:
table_data = [[item] for item in res]
click.echo(tabulate(table_data, headers=["db_name"], tablefmt="pretty"))


@delete.command("database")
@click.option(
"-db",
"--db_name",
"db_name",
help="Database name.",
required=True,
type=str,
)
@click.option(
"-a",
"--alias",
"alias",
help="The connection alias name.",
type=str,
)
@click.pass_obj
def drop_database(obj, db_name=None, alias=None):
"""
Drop database.

Example:

milvus_cli > drop database -db testdb -a default
"""
try:
res = obj.database.drop_database(db_name, alias)
except Exception as e:
click.echo(message=e, err=True)
else:
click.echo(res)


@cli.group("use", no_args_is_help=False)
@click.pass_obj
def use(obj):
"""Use database"""
pass


@use.command("database")
@click.option(
"-db",
"--db_name",
"db_name",
help="Database name.",
required=True,
type=str,
)
@click.option(
"-a",
"--alias",
"alias",
help="The connection alias name.",
type=str,
)
@click.pass_obj
def use_database(obj, db_name=None, alias=None):
"""
Use database.

Example:

milvus_cli > use database -db testdb -a default
"""
try:
res = obj.database.using_database(db_name, alias)
except Exception as e:
click.echo(message=e, err=True)
else:
click.echo(res)
23 changes: 22 additions & 1 deletion milvus_cli/scripts/helper_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,28 @@ def clear():
@cli.group(no_args_is_help=False)
@click.pass_obj
def show(obj):
"""Show connection, loading_progress and index_progress."""
"""Show connection, database, loading_progress and index_progress."""
pass


@cli.group("list", no_args_is_help=False)
@click.pass_obj
def getList(obj):
"""List collections,databases, partitions and indexes."""
pass


@cli.group("create", no_args_is_help=False)
@click.pass_obj
def create(obj):
"""Create collection, database, partition and index."""
pass


@cli.group("delete", no_args_is_help=False)
@click.pass_obj
def delete(obj):
"""Delete collection, database, partition,alias and index."""
pass


Expand Down
7 changes: 6 additions & 1 deletion milvus_cli/scripts/milvus_cli.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from init_cli import cli
from connection_cli import connect, connection
from helper_cli import help, version, clear, show, runCliPrompt

from database_cli import create_database, list_databases, drop_database, use_database

cli.add_command(help)
cli.add_command(version)
Expand All @@ -11,6 +11,11 @@
cli.add_command(connect)
cli.add_command(connection)

cli.add_command(create_database)
cli.add_command(list_databases)
cli.add_command(drop_database)
cli.add_command(use_database)


if __name__ == "__main__":
runCliPrompt()
Loading