skillfed

casbin-async-sqlalchemy-adapter

Asynchronous SQLAlchemy Adapter for PyCasbin

casbin-async-sqlalchemy-adapter v1.17.0 139.9K downloads/30d#11,286 on PyPI6
Permissive license Apache-2.0 Active released

What it is and what it does

This package bridges PyCasbin's access-control enforcement engine with SQLAlchemy's async ORM, allowing you to store and retrieve authorization policies from a database instead of keeping them in memory or configuration files. It wraps SQLAlchemy's async session management to handle policy persistence transparently, supporting multiple database backends (PostgreSQL, MySQL, SQLite, Oracle, SQL Server, MariaDB, Firebird) through SQLAlchemy's driver ecosystem.

You define your access-control model in a Casbin configuration file, then use this adapter to load policies from a database table and save policy changes back to it. The adapter integrates with async/await workflows, making it suitable for async web frameworks and services. It also supports advanced features like soft deletion (marking records as deleted rather than removing them), external session management for transaction control, and Alembic migration integration for schema management.

Use it for:

  • Store RBAC (role-based access control) policies in PostgreSQL or MySQL for a web service, loading them at startup and updating them dynamically.
  • Implement soft-deleted audit trails of permission changes by marking policy records as deleted instead of removing them permanently.
  • Manage complex ABAC (attribute-based access control) rules in SQLite for a desktop or embedded application with async policy enforcement.
  • Integrate policy persistence into an existing Alembic migration workflow to version-control Casbin rule schema changes.
  • Use externally managed SQLAlchemy sessions to coordinate policy updates with other database transactions in a single atomic operation.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Provides an asynchronous SQLAlchemy adapter for PyCasbin, enabling policy-based access control rules to be loaded from and persisted to databases like PostgreSQL, MySQL, SQLite, Oracle, and others.

Yes. The package is actively maintained, has no known vulnerabilities, low install friction, and a permissive license. Install it if you need to persist Casbin policies in a database and are already using async SQLAlchemy; it is the standard adapter for that use case. Not necessary if you store policies in files or memory.

Install

casbin-async-sqlalchemy-adapter on PyPI

pip

pip install casbin-async-sqlalchemy-adapter

uv

uv add casbin-async-sqlalchemy-adapter

poetry

poetry add casbin-async-sqlalchemy-adapter

Installing casbin-async-sqlalchemy-adapter

Before you install

Low friction: pure Python wheel with only two runtime dependencies (SQLAlchemy and pycasbin). Active maintenance with a recent release (2025-12-10) and commits as of 2026-08-06.

License in practice

Apache-2.0 permissive license allows commercial and private use with minimal restrictions; you must include a copy of the license and note any modifications.

Quickstart

pip install casbin-async-sqlalchemy-adapter

import casbin_async_sqlalchemy_adapter
import casbin

adapter = casbin_async_sqlalchemy_adapter.Adapter('sqlite+aiosqlite:///test.db')
e = casbin.AsyncEnforcer('path/to/model.conf', adapter)

if e.enforce("alice", "data1", "read"):
    # permit alice to read data1
    pass

Requires an async-compatible SQLAlchemy driver (e.g., aiosqlite for SQLite, aiomysql for MySQL) and a Casbin model configuration file.

Verify before relying

  • Whether the adapter's soft-deletion and Alembic integration features are production-tested or primarily documented examples.
  • Performance characteristics when handling large policy datasets or high-concurrency access patterns.
  • Whether external session management is required for optimal transaction control in production deployments.

Package facts

License Apache-2.0 (permissive)
Python support supports the current Python release (>=3.7)
Install friction low — pure-Python wheel
Runtime dependencies 2 — SQLAlchemy, pycasbin
Maintenance actively maintained — 247 days since the last release
Last repo commit
First released
Downloads 139,864/month — #11,286 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: casbin_async_sqlalchemy_adapter-1.17.0-py3-none-any.whl

Keywords: asynccasbin, SQLAlchemy, casbin-adapter, rbac, access control, abac, acl, permission

License :: OSI Approved :: Apache Software LicenseOperating System :: OS IndependentProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.9

Tags

async casbin sqlalchemy adapterpolicy storage databaserbac access controlasync permission managementcasbin policy persistencesqlalchemy async adapteracl abac enforcement
access-controlasync-ormpolicy-engine

More Database packages