Skip to content

Tools

Helpfull tools to use fonduer.

save_create_project(conn_string, project_name)

Cleanup the Fonduer database and create a new project in the database.

Parameters:

Name Type Description Default
conn_string str

Fonduer postgres connection string.

required
project_name str

Fonduer project name.

required
Source code in LabelstudioToFonduer/fonduer_tools.py
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
def save_create_project(conn_string: str, project_name: str):
    """Cleanup the Fonduer database and create a new project in the database.

    Args:
        conn_string (str): Fonduer postgres connection string.
        project_name (str): Fonduer project name.
    """
    # create connection
    engine = sqlalchemy.create_engine(conn_string)
    conn = engine.connect()
    conn.execute("commit")

    # Check existing projects
    current_dbs = engine.execute("SELECT datname FROM pg_database;").fetchall()
    current_dbs = [db[0] for db in current_dbs]

    # Wipe if project exists
    if project_name in current_dbs:
        engine = sqlalchemy.create_engine(conn_string)
        conn = engine.connect()
        conn.execute("commit")
        conn.execute(
            f"""SELECT 
            pg_terminate_backend(pid) 
        FROM 
            pg_stat_activity 
        WHERE 
            -- don't kill my own connection!
            pid <> pg_backend_pid()
            -- don't kill the connections to other databases
            AND datname = '{project_name}'
            ;"""
        )

        conn.execute("commit")
        conn.execute("drop database " + project_name)

    # Create Project
    conn.execute("commit")
    conn.execute("create database " + project_name)
    conn.close()