Skip to main content
MySQL persists agent conversations with automatic schema creation and connection pooling.
from praisonaiagents import Agent, db

agent = Agent(
    name="MySQLBot",
    instructions="You are a helpful assistant.",
    db=db(database_url="mysql://user:pass@localhost:3306/praisonai"),
    session_id="mysql-session",
)
agent.start("Hello — save this to MySQL")
The user resumes a session; MySQL persists the full conversation history.

Quick Start

1

Simple Usage

pip install mysql-connector-python praisonai
from praisonaiagents import Agent, db

agent = Agent(
    name="MySQLBot",
    db=db(database_url="mysql://user:pass@localhost:3306/praisonai"),
    session_id="session-1",
)
agent.start("Hello!")
2

With Configuration

from praisonai.persistence.conversation.mysql import MySQLConversationStore

store = MySQLConversationStore(
    host="localhost",
    port=3306,
    database="praisonai",
    user="root",
    password="secret",
    table_prefix="praison_",
    auto_create_tables=True,
    pool_size=10,
)

How It Works

TablePurpose
praison_sessionsSession metadata
praison_messagesConversation history

Configuration Options

OptionTypeDefaultDescription
urlstrNoneFull MySQL URL (overrides individual options)
hoststr"localhost"MySQL server hostname
portint3306MySQL server port
databasestr"praisonai"Database name
userstr"root"Database username
passwordstr""Database password
table_prefixstr"praison_"Prefix for table names
auto_create_tablesboolTrueCreate tables automatically
pool_sizeint5Connection pool size

URL formats

db(database_url="mysql://user:pass@localhost:3306/praisonai")
db(database_url="mysql://user:pass@host:3306/db?charset=utf8mb4")
For async workloads, use create_conversation_store("async_mysql", ...).

Best Practices

Agent(db=db(database_url="mysql://...")) handles store wiring — no manual setup needed.
Isolate apps on one database with different prefixes: table_prefix="prod_" vs table_prefix="staging_".
Increase pool_size for high-traffic deployments; use smaller pools for serverless MySQL hosts.
Append ?ssl_mode=REQUIRED to the connection URL for encrypted connections.

MySQL Conversation Store

Direct store API and registry usage

PostgreSQL Persistence

PostgreSQL for JSONB and advanced queries