chore(release): 1.5.0 [skip ci] # [1.5.0](https://github.com/officialpycasbin/casbin-databases-adapter/compare/v1.4.0...v1.5.0) (2025-08-20) ### Features * fix README badges ([#1](https://github.com/officialpycasbin/casbin-databases-adapter/issues/1)) ([e3872dc](https://github.com/officialpycasbin/casbin-databases-adapter/commit/e3872dcc1d50d87bbbc3b3d49d4b39f4888eefbf))
This is an Adapter for PyCasbin that implemented using Databases connection to achieve async process
pip install casbin_databases_adapter
import casbin_databases_adapter import casbin from databases import Database import sqlalchemy from sqlalchemy import Table, Column, String, Integer from sqlalchemy.sql.ddl import CreateTable import asyncio DATABASE_URL = "sqlite+aiosqlite:///example.db" async def create_casbin_rule_table(db: Database): metadata = sqlalchemy.MetaData() table = Table( "casbin_rules", metadata, Column("id", Integer, primary_key=True), Column("ptype", String(255)), Column("v0", String(255)), Column("v1", String(255)), Column("v2", String(255)), Column("v3", String(255)), Column("v4", String(255)), Column("v5", String(255)), ) q = CreateTable(table) await db.execute(query=str(q)) return table async def main(): database = Database(DATABASE_URL) await database.connect() casbin_rule_table = await create_casbin_rule_table(database) adapter = casbin_databases_adapter.DatabasesAdapter(db=database, table=casbin_rule_table) e = casbin.Enforcer('path/to/model.conf', adapter) sub = "alice" # the user that wants to access a resource. obj = "data1" # the resource that is going to be accessed. act = "read" # the operation that the user performs on the resource. if e.enforce(sub, obj, act): # permit alice to read data1 pass else: # deny the request, show an error pass # run the main function asyncio.run(main())
This project is licensed under the Apache 2.0 license.