SQLite
SQLite conversation store setup
SQLite
SQLite is the simplest option for local development and testing.
Installation
pip install "praisonaiagents[tools]"Quick Start
from praisonaiagents import Agent
agent = Agent(
name="Assistant",
instructions="You are a helpful assistant.",
memory={
"db": "conversations.db",
"session_id": "my-session"
}
)
response = agent.start("Hello!")
print(response)File Path Options
from praisonaiagents import Agent
# Current directory
agent = Agent(name="Bot", memory={"db": "mydata.db"})
# Absolute path
agent = Agent(name="Bot", memory={"db": "/home/user/data/conversations.db"})
# Subdirectory
agent = Agent(name="Bot", memory={"db": "./data/conversations.db"})Environment Variables
export PRAISON_CONVERSATION_URL="mydata.db"import os
from praisonaiagents import Agent
agent = Agent(
name="Assistant",
memory={"db": os.getenv("PRAISON_CONVERSATION_URL")}
)CLI
# Validate connection
praisonai persistence doctor --conversation-url "mydata.db"
# Run with persistence
praisonai persistence run \
--conversation-url "mydata.db" \
--session-id "local-session" \
"Hello!"When to Use SQLite
✅ Good for:
- Local development
- Testing
- Single-user applications
- Prototyping
❌ Not recommended for:
- Production multi-user apps
- High concurrency
- Distributed systems
Storage Backend (Advanced)
For training data, sessions, and general persistence, use the SQLiteBackend:
- Choosing
table_name: keep it to letters, digits, and underscores. SQL keywords (select,order) and digit-leading names (9table) are safe — the backend quotes identifiers internally. See Table name rules.
from praisonaiagents.storage import SQLiteBackend, BaseJSONStore
backend = SQLiteBackend(db_path="~/.praisonai/data.db")
store = BaseJSONStore("session.json", backend=backend)
store.save({"messages": ["Hello"]})
data = store.load()from praisonai.train.agents.storage import TrainingStorage
from praisonaiagents.storage import SQLiteBackend
with TrainingStorage(
session_id="train-123",
backend=SQLiteBackend(db_path="~/.praisonai/train.db"),
) as storage:
storage.save_iteration(...)
# Connection closed automatically — safe on Windows, no ResourceWarningfrom praisonai.cli.state.sessions import SessionManager
from praisonaiagents.storage import SQLiteBackend
backend = SQLiteBackend(db_path="~/.praisonai/sessions.db")
manager = SessionManager(backend=backend)
sessions = manager.list(limit=10)from praisonai.recipe.history import RunHistory
from praisonaiagents.storage import SQLiteBackend
backend = SQLiteBackend(db_path="~/.praisonai/runs.db")
history = RunHistory(backend=backend)from praisonai.mcp_server.tool_index import MCPToolIndex
from praisonaiagents.storage import SQLiteBackend
backend = SQLiteBackend(db_path="~/.praisonai/mcp.db")
index = MCPToolIndex(backend=backend)CLI Usage
# Training with SQLite backend
praisonai train agents --input "Hello" --storage-backend sqlite --storage-path ~/.praisonai/train.db
# Session list with SQLite backend
praisonai session list --storage-backend sqlite --storage-path ~/.praisonai/sessions.dbSee Storage Backends for more details.
Troubleshooting
File permissions:
# Check if directory is writable
touch test.db && rm test.dbDatabase locked:
- SQLite only allows one writer at a time
- Use PostgreSQL for concurrent access