MySQLDb stores a Team’s sessions and run history in MySQL.
Usage
Install theagno, sqlalchemy, pymysql, openai, and ddgs packages:
uv pip install agno sqlalchemy pymysql openai ddgs
Run MySQL
Install Docker Desktop, then start MySQL on port3306:
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
mysql_for_team.py
from typing import List
from agno.agent import Agent
from agno.db.mysql import MySQLDb
from agno.models.openai import OpenAIResponses
from agno.team import Team
from agno.tools.hackernews import HackerNewsTools
from agno.tools.websearch import WebSearchTools
from pydantic import BaseModel
db_url = "mysql+pymysql://ai:ai@localhost:3306/ai"
db = MySQLDb(db_url=db_url)
class Article(BaseModel):
title: str
summary: str
reference_links: List[str]
hn_researcher = Agent(
name="HackerNews Researcher",
model=OpenAIResponses(id="gpt-5.2"),
role="Gets top stories from HackerNews.",
tools=[HackerNewsTools()],
)
web_searcher = Agent(
name="Web Searcher",
model=OpenAIResponses(id="gpt-5.2"),
role="Searches the web for information on a topic",
tools=[WebSearchTools()],
add_datetime_to_context=True,
)
hn_team = Team(
name="HackerNews Team",
model=OpenAIResponses(id="gpt-5.2"),
members=[hn_researcher, web_searcher],
db=db,
instructions=[
"First, search HackerNews for what the user is asking about.",
"Then, ask the web searcher to search for each story to get more information.",
"Finally, summarize each story and include its reference links.",
],
output_schema=Article,
markdown=True,
show_members_responses=True,
add_member_tools_to_context=False,
)
hn_team.print_response("Write an article about the top 2 stories on HackerNews")
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
id | Optional[str] | None | Database ID. Derived from the connection and schema when omitted. |
db_engine | Optional[Engine] | None | SQLAlchemy database engine. Provide this or db_url. |
db_schema | Optional[str] | None | Database schema. Uses "ai" when omitted. |
db_url | Optional[str] | None | Database URL. Provide this or db_engine. |
session_table | Optional[str] | None | Table for Agent, Team, and Workflow sessions. Uses "agno_sessions" when omitted. |
memory_table | Optional[str] | None | Table for memories. Uses "agno_memories" when omitted. |
metrics_table | Optional[str] | None | Table for metrics. Uses "agno_metrics" when omitted. |
eval_table | Optional[str] | None | Table for evaluation run data. Uses "agno_eval_runs" when omitted. |
knowledge_table | Optional[str] | None | Table for knowledge content. Uses "agno_knowledge" when omitted. |
culture_table | Optional[str] | None | Table for cultural knowledge. Uses "agno_culture" when omitted. |
traces_table | Optional[str] | None | Table for traces. Uses "agno_traces" when omitted. |
spans_table | Optional[str] | None | Table for spans. Uses "agno_spans" when omitted. |
versions_table | Optional[str] | None | Table for schema versions. Uses "agno_schema_versions" when omitted. |
create_schema | bool | True | Create the database schema when it does not exist. Set to False when migrations manage it. |