šŸ” Code Extractor

function demonstrate_sql_workflow

Maturity: 46

Demonstrates the enhanced SQL workflow for the SmartStat system by loading configurations, initializing SQL query generator, testing natural language to SQL conversion, and displaying schema analysis.

File:
/tf/active/vicechatdev/smartstat/demo_enhanced_sql_workflow.py
Lines:
16 - 120
Complexity:
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 (Poulpharm LIMS), analyzing database schema structure, and displaying connection settings. It's primarily used for validation, testing, and demonstrating the SQL generation capabilities 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 Poulpharm_labosoft.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, and schema analysis.

Dependencies

  • sys
  • os
  • sql_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
from sql_query_generator import SQLQueryGenerator, DatabaseSchema, ConnectionConfig, get_default_connection_config, get_default_schema_file
import sys
import os

# Run the demonstration
demonstrate_sql_workflow()

# The function will:
# 1. Load default configurations from sql_config.py and Poulpharm_labosoft.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

Best Practices

  • Ensure sql_config.py and Poulpharm_labosoft.json files exist in the expected locations before running
  • Verify database connection credentials are properly configured to avoid connection errors
  • Use this function primarily for demonstration, testing, and validation purposes rather than production workflows
  • Review the console output to understand the system's capabilities and SQL generation patterns
  • The function handles exceptions gracefully and will print error messages if configurations fail to load
  • Consider redirecting output to a file for detailed analysis: python script.py > demo_output.txt
  • The function tests 6 predefined queries - modify the test_queries list to test custom scenarios
  • SQL output is truncated to first 8 lines for brevity - check full SQL in actual implementation

Similar Components

AI-powered semantic similarity - components with related functionality:

  • function demonstrate_sql_workflow_v1 99.5% similar

    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.

    From: /tf/active/vicechatdev/full_smartstat/demo_enhanced_sql_workflow.py
  • function main_v63 88.2% similar

    Demonstrates the SmartStat SQL Workflow by loading a database schema, initializing a SQL query generator, and generating SQL queries from natural language requests for various laboratory data analysis scenarios.

    From: /tf/active/vicechatdev/smartstat/demo_sql_workflow.py
  • function main_v62 84.7% similar

    Demonstrates a SmartStat SQL workflow by loading a database schema, initializing a SQL query generator, and generating SQL queries from natural language requests with detailed output and metadata.

    From: /tf/active/vicechatdev/full_smartstat/demo_sql_workflow.py
  • function demo_analysis_workflow 76.3% similar

    Demonstrates a complete end-to-end statistical analysis workflow using the SmartStat system, including session creation, data loading, natural language query processing, analysis execution, and result interpretation.

    From: /tf/active/vicechatdev/full_smartstat/demo.py
  • function test_enhanced_workflow 67.5% similar

    A comprehensive test function that validates the EnhancedSQLWorkflow system by testing component initialization, request parsing, and data assessment capabilities.

    From: /tf/active/vicechatdev/full_smartstat/test_enhanced_workflow.py
← Back to Browse