589c5b06fe
- Auto-fixed 70 lint errors (import sorting, aliased errors, datetime.UTC)
- Fixed 85 remaining errors manually:
- E501: wrapped long lines in queen_profiles, catalog, routes_credentials
- F821: added missing TYPE_CHECKING imports for AgentHost, ToolRegistry,
HookContext, HookResult; added runtime imports where needed
- F811: removed duplicate method definitions in queen_lifecycle_tools
- F841/B007: removed unused variables in discovery.py
- W291: removed trailing whitespace in queen nodes
- E402: moved import to top of queen_memory_v2.py
- Fixed AgentRuntime -> AgentHost in example template type annotations
- Reformatted 343 files with ruff format
117 lines
3.5 KiB
Python
117 lines
3.5 KiB
Python
"""
|
|
Database Initialization Script Runner for AdenTestDB
|
|
|
|
This script executes the SQL initialization file to create the AdenTestDB database.
|
|
Make sure your SQL Server is running before executing this script.
|
|
"""
|
|
|
|
import os
|
|
|
|
import pyodbc
|
|
from dotenv import load_dotenv
|
|
|
|
# Load environment variables from .env
|
|
load_dotenv()
|
|
|
|
# Database connection settings (from environment variables)
|
|
SERVER = os.getenv("MSSQL_SERVER", r"MONSTER\MSSQLSERVERR")
|
|
USERNAME = os.getenv("MSSQL_USERNAME")
|
|
PASSWORD = os.getenv("MSSQL_PASSWORD")
|
|
|
|
# SQL file path
|
|
SQL_FILE = os.path.join(os.path.dirname(__file__), "init_aden_testdb.sql")
|
|
|
|
|
|
def execute_sql_file():
|
|
"""Execute the SQL initialization file."""
|
|
connection = None
|
|
|
|
try:
|
|
# Read SQL file
|
|
if not os.path.exists(SQL_FILE):
|
|
print(f"[ERROR] SQL file not found: {SQL_FILE}")
|
|
return False
|
|
|
|
with open(SQL_FILE, encoding="utf-8") as f:
|
|
sql_script = f.read()
|
|
|
|
print("=" * 70)
|
|
print("AdenTestDB Database Initialization")
|
|
print("=" * 70)
|
|
print(f"Server: {SERVER}")
|
|
print(f"SQL Script: {SQL_FILE}")
|
|
print()
|
|
|
|
# Connect to master database (to create new database)
|
|
connection_string = (
|
|
f"DRIVER={{ODBC Driver 17 for SQL Server}};SERVER={SERVER};DATABASE=master;UID={USERNAME};PWD={PASSWORD};"
|
|
)
|
|
|
|
print("Connecting to SQL Server...")
|
|
connection = pyodbc.connect(connection_string)
|
|
connection.autocommit = True # Required for CREATE DATABASE
|
|
cursor = connection.cursor()
|
|
|
|
print("[OK] Connected successfully!")
|
|
print()
|
|
print("Executing SQL script...")
|
|
print("-" * 70)
|
|
|
|
# Split by GO statements and execute each batch
|
|
batches = sql_script.split("\nGO\n")
|
|
|
|
for i, batch in enumerate(batches, 1):
|
|
batch = batch.strip()
|
|
if batch and not batch.startswith("--"):
|
|
try:
|
|
cursor.execute(batch)
|
|
# Print any messages from the server
|
|
while cursor.nextset():
|
|
pass
|
|
except pyodbc.Error as e:
|
|
# Some statements might not return results, that's OK
|
|
if "No results" not in str(e):
|
|
print(f"Warning in batch {i}: {str(e)}")
|
|
|
|
print("-" * 70)
|
|
print()
|
|
print("=" * 70)
|
|
print("[SUCCESS] Database initialization completed successfully!")
|
|
print("=" * 70)
|
|
print()
|
|
print("Next steps:")
|
|
print("1. Run: python test_mssql_connection.py")
|
|
print("2. Verify the relational schema and sample data")
|
|
print()
|
|
|
|
return True
|
|
|
|
except pyodbc.Error as e:
|
|
print()
|
|
print("=" * 70)
|
|
print("[ERROR] Database initialization failed!")
|
|
print("=" * 70)
|
|
print(f"Error detail: {str(e)}")
|
|
print()
|
|
print("Possible solutions:")
|
|
print("1. Ensure SQL Server is running")
|
|
print("2. Check server name, username, and password")
|
|
print("3. Ensure you have permission to create databases")
|
|
print("4. Verify ODBC Driver 17 for SQL Server is installed")
|
|
print()
|
|
return False
|
|
|
|
except Exception as e:
|
|
print(f"\n[ERROR] Unexpected error: {str(e)}")
|
|
return False
|
|
|
|
finally:
|
|
if connection:
|
|
connection.close()
|
|
print("Connection closed.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
success = execute_sql_file()
|
|
exit(0 if success else 1)
|