Documentation Index
Fetch the complete documentation index at: https://mintlify.com/MemoriLabs/Memori/llms.txt
Use this file to discover all available pages before exploring further.
MySQL
If your infrastructure already runs MySQL or MariaDB, you can use it directly with Memori without setting up a separate database.
Install
pip install memori pymysql
Quick Start
from memori import Memori
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine(
"mysql+pymysql://user:password@localhost:3306/memori_db",
pool_pre_ping=True
)
SessionLocal = sessionmaker(bind=engine)
mem = Memori(conn=SessionLocal)
mem.config.storage.build()
Connection Strings
| Driver | Connection String |
|---|
| PyMySQL | mysql+pymysql://user:pass@host:3306/database |
| mysqlclient | mysql+mysqldb://user:pass@host:3306/database |
| With charset | mysql+pymysql://user:pass@host:3306/database?charset=utf8mb4 |
| With SSL | mysql+pymysql://user:pass@host:3306/database?ssl_ca=/path/to/ca.pem |
Complete Example
import os
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from memori import Memori
from openai import OpenAI
# Setup MySQL with connection pooling
engine = create_engine(
"mysql+pymysql://user:password@localhost:3306/memori_db"
"?charset=utf8mb4",
pool_pre_ping=True,
pool_size=5,
max_overflow=10,
pool_recycle=1800
)
SessionLocal = sessionmaker(bind=engine)
# Setup Memori with OpenAI
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
mem = Memori(conn=SessionLocal).llm.register(client)
mem.attribution(entity_id="user_123", process_id="my_agent")
mem.config.storage.build()
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "I work at Acme Corp as a designer."}]
)
print(response.choices[0].message.content)
mem.augmentation.wait()
facts = mem.recall("workplace")
print(facts)
MariaDB
MariaDB uses the same drivers and connection strings as MySQL:
engine = create_engine(
"mysql+pymysql://user:password@mariadb-host:3306/memori_db",
pool_pre_ping=True
)
Always use charset=utf8mb4 to ensure proper Unicode support for storing text embeddings and multilingual content.
Connection Pooling
Recommended settings for production:
engine = create_engine(
"mysql+pymysql://user:password@localhost:3306/memori_db",
pool_pre_ping=True, # Check connection health
pool_size=5, # Minimum pool connections
max_overflow=10, # Additional connections under load
pool_recycle=1800 # Recycle connections after 30 min
)