Quick Start
How It Works
| Table | Purpose |
|---|---|
praison_sessions | Session metadata |
praison_messages | Conversation history |
Configuration Options
| Option | Type | Default | Description |
|---|---|---|---|
url | str | None | Full MySQL URL (overrides individual options) |
host | str | "localhost" | MySQL server hostname |
port | int | 3306 | MySQL server port |
database | str | "praisonai" | Database name |
user | str | "root" | Database username |
password | str | "" | Database password |
table_prefix | str | "praison_" | Prefix for table names |
auto_create_tables | bool | True | Create tables automatically |
pool_size | int | 5 | Connection pool size |
URL formats
create_conversation_store("async_mysql", ...).
Best Practices
Use db() for most agents
Use db() for most agents
Agent(db=db(database_url="mysql://...")) handles store wiring — no manual setup needed.Set table_prefix for multi-tenancy
Set table_prefix for multi-tenancy
Isolate apps on one database with different prefixes:
table_prefix="prod_" vs table_prefix="staging_".Tune pool_size for concurrency
Tune pool_size for concurrency
Increase
pool_size for high-traffic deployments; use smaller pools for serverless MySQL hosts.Use SSL in production
Use SSL in production
Append
?ssl_mode=REQUIRED to the connection URL for encrypted connections.Related
MySQL Conversation Store
Direct store API and registry usage
PostgreSQL Persistence
PostgreSQL for JSONB and advanced queries

