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

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)

OceanBase with SQLAlchemy

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

registry.register("mysql.oceanbase", "pyobvector.schema.dialect", "OceanBaseDialect")

engine = create_engine(
    "mysql+oceanbase://root:@host:2881/memori_test?charset=utf8mb4",
    pool_pre_ping=True
)
SessionLocal = sessionmaker(bind=engine)

mem = Memori(conn=SessionLocal)

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.