Usage

MySQL for Agent

Store agent sessions and run history in MySQL with MySQLDb.

MySQLDb stores an Agent's sessions and run history 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

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

Set your OpenAI API key:

Set OpenAI Key

Set your OPENAI_API_KEY as an environment variable. You can get one from OpenAI.

export OPENAI_API_KEY=sk-***
mysql_for_agent.py
from agno.agent import Agent
from agno.db.mysql import MySQLDb

db_url = "mysql+pymysql://ai:ai@localhost:3306/ai"

db = MySQLDb(db_url=db_url)

agent = Agent(
    db=db,
    add_history_to_context=True,
)
agent.print_response("How many people live in Canada?")
agent.print_response("What is their national anthem called?")

Run the example

Save the code as mysql_for_agent.py, start the database described above, and run:

python mysql_for_agent.py

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.