function demonstrate_sql_workflow_v1
Demonstrates the enhanced SQL workflow for the SmartStat system by loading configurations, initializing the SQL query generator, testing natural language to SQL conversion, and displaying schema analysis.
/tf/active/vicechatdev/full_smartstat/demo_enhanced_sql_workflow.py
16 - 120
moderate
Purpose
This function serves as a comprehensive demonstration and testing tool for the SmartStat Enhanced SQL Workflow. It showcases the system's capabilities including: loading database schema and connection configurations, generating SQL queries from natural language inputs, recognizing domain-specific patterns (particularly for Poulpharm LIMS veterinary laboratory), analyzing database schema structure, and displaying connection settings. It's designed for testing, validation, and educational purposes to demonstrate the system's features to users or developers.
Source Code
def demonstrate_sql_workflow():
"""Demonstrate the enhanced SQL workflow"""
print("𧬠SmartStat Enhanced SQL Workflow Demo")
print("=" * 50)
# Load default configurations
print("\n1. Loading default configurations...")
try:
schema_file = get_default_schema_file()
schema = DatabaseSchema.from_json(schema_file)
conn_config = get_default_connection_config()
print(f"ā
Database: {schema.database_name}")
print(f"ā
Description: {schema.description}")
print(f"ā
Total tables: {len(schema.complete_table_list)}")
print(f"ā
Connection: {conn_config.server}/{conn_config.database}")
except Exception as e:
print(f"ā Error loading configurations: {e}")
return
# Initialize SQL query generator
print("\n2. Initializing SQL Query Generator...")
query_generator = SQLQueryGenerator(schema)
print(f"ā
Poulpharm optimization: {query_generator.is_poulpharm}")
# Test cases
test_queries = [
"Show me recent bacteriology results with antibiogram data",
"Get customer statistics for the last 6 months",
"Analyze PCR test results",
"Check sample workflow status",
"Show validation quality metrics",
"Get recent laboratory requests"
]
print("\n3. Testing SQL Generation...")
print("-" * 40)
for i, user_query in enumerate(test_queries, 1):
print(f"\nš Test {i}: {user_query}")
try:
sql_query, metadata = query_generator.generate_sql_query(user_query)
print(f"ā
Explanation: {metadata.get('explanation', 'Generated SQL query')}")
print("š Generated SQL:")
print("```sql")
# Show first few lines of SQL for brevity
sql_lines = sql_query.split('\n')
for line in sql_lines[:8]:
print(f" {line}")
if len(sql_lines) > 8:
print(f" ... ({len(sql_lines) - 8} more lines)")
print("```")
except Exception as e:
print(f"ā Error: {e}")
# Show pattern recognition
print("\n4. Pattern Recognition Demo...")
print("-" * 40)
patterns = {
'Bacteriology': ['bacteria', 'antibiogram', 'sensitivity'],
'Customer Analysis': ['customer', 'company', 'veterinarian'],
'PCR Testing': ['pcr', 'molecular', 'genetic'],
'Sample Workflow': ['sample', 'workflow', 'processing'],
'Quality Control': ['quality', 'validation', 'validated']
}
for pattern_name, keywords in patterns.items():
print(f"\nš {pattern_name} Pattern:")
print(f" Keywords: {', '.join(keywords)}")
if hasattr(query_generator, 'common_patterns'):
pattern_info = query_generator.common_patterns.get(pattern_name.lower().replace(' ', '_'))
if pattern_info:
print(f" Tables: {pattern_info.get('tables', 'Dynamic')}")
print("\n5. Database Schema Analysis...")
print("-" * 40)
print(f"š Key Table Categories:")
for category, info in schema.table_categories.items():
table_count = len(info.get('tables', [])) if 'tables' in info else info.get('table_count', 'N/A')
print(f" ⢠{category}: {table_count} tables")
print(f"\nš Key Relationships:")
for rel_name, rel_info in schema.key_relationships.items():
flow = rel_info.get('flow', 'N/A')
print(f" ⢠{rel_name}: {flow}")
print("\n6. Connection Configuration...")
print("-" * 40)
print(f"š„ļø Server: {conn_config.server}")
print(f"šļø Database: {conn_config.database}")
print(f"š¤ Username: {conn_config.username}")
print(f"š Driver: {conn_config.driver}")
print(f"š Connection String: {conn_config.to_connection_string()[:50]}...")
print("\nā
Demo completed successfully!")
print("\nš” Usage Tips:")
print(" ⢠Use natural language to describe your analysis needs")
print(" ⢠The system recognizes Poulpharm LIMS patterns automatically")
print(" ⢠SQL queries are optimized for the veterinary laboratory domain")
print(" ⢠Default configurations are loaded from sql_config.py and database_schema_20251003_120434.json")
Return Value
This function does not return any value (implicitly returns None). It performs side effects by printing demonstration output to the console, including configuration details, generated SQL queries, pattern recognition results, schema analysis, and connection information.
Dependencies
sysossql_query_generator
Required Imports
import sys
import os
from sql_query_generator import SQLQueryGenerator
from sql_query_generator import DatabaseSchema
from sql_query_generator import ConnectionConfig
from sql_query_generator import get_default_connection_config
from sql_query_generator import get_default_schema_file
Usage Example
# Simple usage - just call the function to run the demo
from sql_query_generator import SQLQueryGenerator, DatabaseSchema, ConnectionConfig, get_default_connection_config, get_default_schema_file
# Run the complete demonstration
demonstrate_sql_workflow()
# The function will:
# 1. Load default configurations from sql_config.py and schema JSON
# 2. Initialize the SQL Query Generator
# 3. Test 6 different natural language queries
# 4. Display pattern recognition capabilities
# 5. Show database schema analysis
# 6. Display connection configuration details
# All output is printed to console with formatted sections
Best Practices
- Ensure sql_config.py and database_schema_20251003_120434.json files exist and are properly configured before running
- This function is designed for demonstration and testing purposes, not for production use
- The function prints extensive output to console, so redirect output if needed for logging
- Error handling is implemented for configuration loading, but individual test queries may fail if schema is incomplete
- The function truncates SQL output to first 8 lines for readability - full queries are generated but not fully displayed
- Use this function to validate that the SQL query generator is working correctly after configuration changes
- The test queries are specifically designed for veterinary laboratory (Poulpharm LIMS) domain - modify them for other domains
Tags
Similar Components
AI-powered semantic similarity - components with related functionality:
-
function demonstrate_sql_workflow 99.5% similar
-
function main_v62 88.2% similar
-
function main_v61 83.9% similar
-
function demo_analysis_workflow 76.9% similar
-
function test_enhanced_workflow 68.7% similar