# Connection

    >>> from crate.client import connect

We create a new connection object:

    >>> connection = connect(client=connection_client_mocked)

Calling the `cursor()` function on the connection will return a cursor object:

    >>> cursor = connection.cursor()

Now we are able to perform any operation provided by the cursor object:

    >>> cursor.rowcount
    -1

Now we close the connection:

    >>> connection.close()

The connection will be unusable from this point. Any operation attempted with the closed connection will raise a `ProgrammingError`:

    >>> cursor = connection.cursor()
    Traceback (most recent call last):
    ...
    ProgrammingError: Connection closed

    >>> cursor.execute('')
    Traceback (most recent call last):
    ...
    ProgrammingError: Connection closed

    >>> connection.commit()
    Traceback (most recent call last):
    ...
    ProgrammingError: Connection closed

    >>> connection = connect(client=connection_client_mocked)
    >>> cursor = connection.cursor()
    >>> cursor.rowcount
    -1