MySQL

If your infrastructure already runs MySQL, you can use it directly with Memori without setting up a separate database.

Install

Install MySQL Driver
pip install memori pymysql

Quick Start

MySQL Connection
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

DriverConnection String
PyMySQLmysql+pymysql://user:pass@host:3306/database
mysqlclientmysql+mysqldb://user:pass@host:3306/database
With charsetmysql+pymysql://user:pass@host:3306/database?charset=utf8mb4
With SSLmysql+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

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)

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)