Use this file to discover all available pages before exploring further.
PostgreSQL provides enterprise-grade SQL database persistence with advanced features like JSONB storage, full-text search, and horizontal scaling for production applications.
from praisonaiagents import Agent, dbagent = Agent( name="ProductionBot", instructions="You are a helpful assistant.", db=db(database_url="postgresql://username:password@localhost:5432/praisonai"), session_id="prod-session")response = agent.chat("Hello! This is saved to PostgreSQL.")print(response) # Conversation persisted to PostgreSQL
2
With Connection Pooling
from praisonaiagents import Agent, db# Production configuration with connection poolingagent = Agent( name="ScalableBot", instructions="You are a helpful assistant.", db=db(database_url="postgresql://user:pass@localhost:5432/mydb?pool_size=10"), session_id="scalable-session")agent.chat("This uses connection pooling for better performance")
from praisonaiagents import Agent, db# Custom PostgreSQL database with specific optionspostgres_db = db.PostgresDB( host="localhost", port=5432, user="praisonai_user", password="secure_password", database="praisonai_production", # Connection pool settings pool_size=10, max_overflow=20, # SSL settings for production sslmode="require")agent = Agent( name="EnterpriseBot", instructions="You are a production assistant.", db=postgres_db, session_id="enterprise-session")
PostgreSQL enables powerful analytics on conversation data:
import psycopg2from praisonaiagents import Agent, db# Create agent and have conversationsagent = Agent( name="AnalyticsBot", db=db(database_url="postgresql://user:pass@localhost:5432/analytics"), session_id="analytics-session")# Have some conversationsagent.chat("Help me analyze customer feedback")agent.chat("What are the trending topics this month?")# Direct database access for analyticsconn = psycopg2.connect( host="localhost", database="analytics", user="user", password="pass")cursor = conn.cursor()# Advanced analytics queriescursor.execute(""" SELECT DATE_TRUNC('hour', created_at) as hour, COUNT(*) as message_count, COUNT(DISTINCT session_id) as unique_sessions FROM messages WHERE created_at > NOW() - INTERVAL '24 hours' GROUP BY hour ORDER BY hour;""")analytics = cursor.fetchall()for hour, msg_count, sessions in analytics: print(f"{hour}: {msg_count} messages, {sessions} sessions")# Full-text search across conversationscursor.execute(""" SELECT session_id, content, created_at FROM messages WHERE content ILIKE %s ORDER BY created_at DESC LIMIT 10;""", ("%customer feedback%",))results = cursor.fetchall()conn.close()