Skip to content

Tortoise ORM always raises ParamsError() in tests if in_trasaction() is used #1002

@MrAngry

Description

@MrAngry

This is fairly simple to explain but was extremely annoying to debug:

extract from initializer()

    Tortoise.apps = {}
    Tortoise._connections = {}
    Tortoise._inited = False

extract from get_connection() called by in_transaction() as first statement

    if connection_name:
        connection = current_transaction_map[connection_name].get()
    elif len(Tortoise._connections) == 1:   <----- CONNECTIONS ARE EMPTY
        connection_name = list(Tortoise._connections.keys())[0]
        connection = current_transaction_map[connection_name].get()
    else:  <----- THIS WILL ALWAYS BE EXECUTED 
        raise ParamsError(
            "You are running with multiple databases, so you should specify"
            f" connection_name: {list(Tortoise._connections.keys())}"
        )
    return connection

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions