fastapi-tenants


Namefastapi-tenants JSON
Version 0.0.2 PyPI version JSON
download
home_pageNone
SummaryA multi-tenancy solution for FastAPI (database-per-tenant, schema-per-tenant, and row-level-tenants strategies). COMMING SOON!!!
upload_time2025-09-11 07:54:56
maintainerNone
docs_urlNone
authorNone
requires_python>=3.12
licenseMIT
keywords async fastapi multi-tenancy saas sqlalchemy tenants
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
---

# fastapi-tenants

*A multi-tenancy solution for FastAPI with support for database-per-tenant, schema-per-tenant, and row-level tenancy strategies.*

---

## ✨ Features

* **Flexible strategies** → database-per-tenant, schema-per-tenant, row-level.
* **Tenant-aware middleware** → resolve tenant from headers, subdomains, or tokens.
* **DB session management** → per-tenant scoped sessions.
* **Pluggable design** → extend strategies or authentication as needed.
* **FastAPI-first** → built for dependency injection and async support.

---

## 📦 Installation

```bash
pip install fastapi-tenants
```

Optional extras:

```bash
pip install "fastapi-tenants[postgres]"
pip install "fastapi-tenants[mysql]"
```

---

## 🚀 Quick Start

```python
from fastapi import FastAPI, Depends
from fastapi_tenants import TenancyMiddleware, get_tenant_session

app = FastAPI()

# Enable tenancy
app.add_middleware(
    TenancyMiddleware,
    strategy="schema",   # or "database", "row"
    header="X-Tenant-ID"
)

@app.get("/users")
def list_users(session = Depends(get_tenant_session)):
    return session.query(User).all()
```

---

## 📚 Roadmap

* [ ] Schema-based tenancy ✅
* [ ] Database-per-tenant support
* [ ] Row-level tenancy
* [ ] Multi-backend support (Postgres, MySQL, SQLite)
* [ ] Example apps & docs

---

## 🤝 Contributing

Contributions are welcome!
Check out [CONTRIBUTING.md](CONTRIBUTING.md) (coming soon).

---

## 📜 License

MIT License © 2025 [Kapil Dagur](https://github.com/KapilDagur)

---

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "fastapi-tenants",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.12",
    "maintainer_email": "Kapil Dagur <kapildagur1306@gmail.com>",
    "keywords": "async, fastapi, multi-tenancy, saas, sqlalchemy, tenants",
    "author": null,
    "author_email": "Kapil Dagur <kapildagur1306@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/50/44/fad27e763e145ac110e0620ea8229a850ce4b4e781aff9075b7e64553d2d/fastapi_tenants-0.0.2.tar.gz",
    "platform": null,
    "description": "\n---\n\n# fastapi-tenants\n\n*A multi-tenancy solution for FastAPI with support for database-per-tenant, schema-per-tenant, and row-level tenancy strategies.*\n\n---\n\n## \u2728 Features\n\n* **Flexible strategies** \u2192 database-per-tenant, schema-per-tenant, row-level.\n* **Tenant-aware middleware** \u2192 resolve tenant from headers, subdomains, or tokens.\n* **DB session management** \u2192 per-tenant scoped sessions.\n* **Pluggable design** \u2192 extend strategies or authentication as needed.\n* **FastAPI-first** \u2192 built for dependency injection and async support.\n\n---\n\n## \ud83d\udce6 Installation\n\n```bash\npip install fastapi-tenants\n```\n\nOptional extras:\n\n```bash\npip install \"fastapi-tenants[postgres]\"\npip install \"fastapi-tenants[mysql]\"\n```\n\n---\n\n## \ud83d\ude80 Quick Start\n\n```python\nfrom fastapi import FastAPI, Depends\nfrom fastapi_tenants import TenancyMiddleware, get_tenant_session\n\napp = FastAPI()\n\n# Enable tenancy\napp.add_middleware(\n    TenancyMiddleware,\n    strategy=\"schema\",   # or \"database\", \"row\"\n    header=\"X-Tenant-ID\"\n)\n\n@app.get(\"/users\")\ndef list_users(session = Depends(get_tenant_session)):\n    return session.query(User).all()\n```\n\n---\n\n## \ud83d\udcda Roadmap\n\n* [ ] Schema-based tenancy \u2705\n* [ ] Database-per-tenant support\n* [ ] Row-level tenancy\n* [ ] Multi-backend support (Postgres, MySQL, SQLite)\n* [ ] Example apps & docs\n\n---\n\n## \ud83e\udd1d Contributing\n\nContributions are welcome!\nCheck out [CONTRIBUTING.md](CONTRIBUTING.md) (coming soon).\n\n---\n\n## \ud83d\udcdc License\n\nMIT License \u00a9 2025 [Kapil Dagur](https://github.com/KapilDagur)\n\n---\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A multi-tenancy solution for FastAPI (database-per-tenant, schema-per-tenant, and row-level-tenants strategies). COMMING SOON!!!",
    "version": "0.0.2",
    "project_urls": {
        "Changelog": "https://github.com/KapilDagur/fastapi-tenants/blob/main/CHANGELOG.md",
        "Documentation": "https://github.com/KapilDagur/fastapi-tenants#readme",
        "Homepage": "https://github.com/KapilDagur/fastapi-tenants",
        "Repository": "https://github.com/KapilDagur/fastapi-tenants"
    },
    "split_keywords": [
        "async",
        " fastapi",
        " multi-tenancy",
        " saas",
        " sqlalchemy",
        " tenants"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6370aff0bee343fad32ae1061d758e6bc34555e389a847969acdd23386576d3c",
                "md5": "59be3c9e7763c0d338b99326fffd5365",
                "sha256": "da1647d10e332311f3139ce7b9c7580f7f94bbb26cf22a681a48ba0ca486a791"
            },
            "downloads": -1,
            "filename": "fastapi_tenants-0.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "59be3c9e7763c0d338b99326fffd5365",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.12",
            "size": 5623,
            "upload_time": "2025-09-11T07:54:54",
            "upload_time_iso_8601": "2025-09-11T07:54:54.701387Z",
            "url": "https://files.pythonhosted.org/packages/63/70/aff0bee343fad32ae1061d758e6bc34555e389a847969acdd23386576d3c/fastapi_tenants-0.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5044fad27e763e145ac110e0620ea8229a850ce4b4e781aff9075b7e64553d2d",
                "md5": "6f9c3c23cf8ed7f89e64f41ba777a60a",
                "sha256": "1849f81029db5b3a1b7d41301a92f839ebf78f0c9290910d88233b5f55e9119c"
            },
            "downloads": -1,
            "filename": "fastapi_tenants-0.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "6f9c3c23cf8ed7f89e64f41ba777a60a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12",
            "size": 4196,
            "upload_time": "2025-09-11T07:54:56",
            "upload_time_iso_8601": "2025-09-11T07:54:56.100314Z",
            "url": "https://files.pythonhosted.org/packages/50/44/fad27e763e145ac110e0620ea8229a850ce4b4e781aff9075b7e64553d2d/fastapi_tenants-0.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-11 07:54:56",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "KapilDagur",
    "github_project": "fastapi-tenants",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "fastapi-tenants"
}
        
Elapsed time: 0.49181s