MySQL

Persist Agno sessions and other data in MySQL.

MySQLDb stores Agent, Team, and Workflow sessions, memories, knowledge, evaluations, and traces in MySQL.

Usage

Start in a virtual environment.

Install Agno, SQLAlchemy, PyMySQL with its MySQL 8 authentication extra, and the OpenAI client:

uv pip install agno sqlalchemy "pymysql[rsa]" openai
mysql_for_agent.py
from agno.agent import Agent
from agno.db.mysql import MySQLDb

db = MySQLDb(db_url="mysql+pymysql://ai:ai@localhost:3306/ai")
agent = Agent(db=db)

Run MySQL

Install Docker Desktop, then start MySQL on port 3306:

docker run -d \
  --name mysql \
  -e MYSQL_ROOT_PASSWORD=ai \
  -e MYSQL_DATABASE=ai \
  -e MYSQL_USER=ai \
  -e MYSQL_PASSWORD=ai \
  -p 3306:3306 \
  mysql:8

Parameters

ParameterTypeDefaultDescription
idOptional[str]NoneDatabase ID. Derived from the connection and schema when omitted.
db_engineOptional[Engine]NoneSQLAlchemy database engine. Provide this or db_url.
db_schemaOptional[str]NoneDatabase schema. Uses "ai" when omitted.
db_urlOptional[str]NoneDatabase URL. Provide this or db_engine.
session_tableOptional[str]NoneTable for Agent, Team, and Workflow sessions. Uses "agno_sessions" when omitted.
runs_tableOptional[str]NoneTable for session runs. Uses "agno_runs" with the default session table, or <session_table>_runs when session_table is customized.
memory_tableOptional[str]NoneTable for memories. Uses "agno_memories" when omitted.
metrics_tableOptional[str]NoneTable for metrics. Uses "agno_metrics" when omitted.
eval_tableOptional[str]NoneTable for evaluation run data. Uses "agno_eval_runs" when omitted.
knowledge_tableOptional[str]NoneTable for knowledge content. Uses "agno_knowledge" when omitted.
traces_tableOptional[str]NoneTable for traces. Uses "agno_traces" when omitted.
spans_tableOptional[str]NoneTable for spans. Uses "agno_spans" when omitted.
versions_tableOptional[str]NoneTable for schema versions. Uses "agno_schema_versions" when omitted.
create_schemaboolTrueCreate the database schema when it does not exist. Set to False when migrations manage it.