Connection Methods

MethodDescriptionUse Case
SQLAlchemyIndustry-standard ORM with sessionmakerProduction applications, connection pools
DB API 2.0Direct Python database drivers (PEP 249)Lightweight, minimal dependencies
DjangoNative Django ORM integrationDjango applications

Supported Databases

DatabaseWebsiteExample Link
SQLitehttps://www.sqlite.org/SQLite Example
PostgreSQLhttps://www.postgresql.org/PostgreSQL Example
MySQLhttps://www.mysql.com/MySQL-compatible drivers
MariaDBhttps://mariadb.org/MySQL-compatible drivers
Neonhttps://neon.tech/Neon Example
Supabasehttps://supabase.com/PostgreSQL-compatible with real-time features
CockroachDBhttps://www.cockroachlabs.com/CockroachDB Example
MongoDBhttps://www.mongodb.com/MongoDB Example
Oraclehttps://www.oracle.com/database/Oracle database support

Quick Start Examples

SQLite with SQLAlchemy

from memori import Memori
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

engine = create_engine("sqlite:///memori.db")
SessionLocal = sessionmaker(bind=engine)

mem = Memori(conn=SessionLocal)

PostgreSQL with SQLAlchemy

from memori import Memori
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

engine = create_engine(
    "postgresql+psycopg://user:password@host:5432/database",
    pool_pre_ping=True
)
SessionLocal = sessionmaker(bind=engine)

mem = Memori(conn=SessionLocal)

MySQL with SQLAlchemy

from memori import Memori
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

engine = create_engine(
    "mysql+pymysql://user:password@host:3306/database",
    pool_pre_ping=True
)
SessionLocal = sessionmaker(bind=engine)

mem = Memori(conn=SessionLocal)

MongoDB with PyMongo

from memori import Memori
from pymongo import MongoClient

client = MongoClient("mongodb://host:27017/")

def get_db():
    return client["memori"]

mem = Memori(conn=get_db)

CockroachDB with SQLAlchemy

from memori import Memori
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

engine = create_engine(
    "postgresql+psycopg://user:password@host:5432/database",
    pool_pre_ping=True
)
SessionLocal = sessionmaker(bind=engine)

mem = Memori(conn=SessionLocal)

Connection Patterns

Connection Factory

Pass a callable that returns a new connection/session:

from sqlalchemy.orm import sessionmaker

SessionLocal = sessionmaker(bind=engine)

# Memori calls SessionLocal() when it needs a connection
mem = Memori(conn=SessionLocal)

MongoDB Pattern

MongoDB uses a function that returns the database:

def get_db():
    return mongo_client["database_name"]

mem = Memori(conn=get_db)

Migration and Schema

Building Schema

Run this command once, via CI/CD or anytime you update Memori:

Memori(conn=db_session_factory).config.storage.build()

This creates the schema Memori needs to store structured information.