function demonstrate_sql_workflow
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.
/tf/active/vicechatdev/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 (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
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
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
Tags
Similar Components
AI-powered semantic similarity - components with related functionality:
-
function demonstrate_sql_workflow_v1 99.5% similar
-
function main_v63 88.2% similar
-
function main_v62 84.7% similar
-
function demo_analysis_workflow 76.3% similar
-
function test_enhanced_workflow 67.5% similar