# Tortoise ORM

**FastAPI Users** provides the necessary tools to work with Tortoise ORM.

## Installation

Install the database driver that corresponds to your DBMS:

```sh
pip install asyncpg
```

```sh
pip install aiomysql
```

```sh
pip install aiosqlite
```

For the sake of this tutorial from now on, we'll use a simple SQLite databse.

## Setup User table

Let's declare our User ORM model.

```py hl_lines="26 27"
{!./src/db_tortoise.py!}
```

As you can see, **FastAPI Users** provides an abstract model that will include base fields for our User table. You can of course add you own fields there to fit to your needs!

## Create the database adapter

The database adapter of **FastAPI Users** makes the link between your database configuration and the users logic. Create it like this.

```py hl_lines="30"
{!./src/db_tortoise.py!}
```

Notice that we pass a reference to your [`UserDB` model](../model.md).

## Register Tortoise

For using Tortoise ORM we must register our models and database.

Tortoise ORM supports integration with FastAPI out-of-the-box. It will automatically bind startup and shutdown events.

```py hl_lines="33 34 35 36 37 38"
{!./src/db_tortoise.py!}
```

!!! warning
    In production, it's strongly recommended to setup a migration system to update your SQL schemas. See [https://tortoise-orm.readthedocs.io/en/latest/migration.html](https://tortoise-orm.readthedocs.io/en/latest/migration.html).

## Next steps

We will now configure an [authentication method](../authentication/index.md).
