2nd
This commit is contained in:
181
backend/test_db.py
Normal file
181
backend/test_db.py
Normal file
@@ -0,0 +1,181 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Test database connection and check data"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
from dotenv import load_dotenv
|
||||
import pymysql
|
||||
from datetime import datetime
|
||||
|
||||
# Load environment variables
|
||||
load_dotenv()
|
||||
|
||||
def test_db_connection():
|
||||
"""Test database connection and list tables"""
|
||||
print("=" * 60)
|
||||
print("Testing Database Connection")
|
||||
print("=" * 60)
|
||||
|
||||
# Get database configuration
|
||||
db_config = {
|
||||
'host': os.getenv('MYSQL_HOST', 'mysql.theaken.com'),
|
||||
'port': int(os.getenv('MYSQL_PORT', 33306)),
|
||||
'user': os.getenv('MYSQL_USER', 'A060'),
|
||||
'password': os.getenv('MYSQL_PASSWORD', 'WLeSCi0yhtc7'),
|
||||
'database': os.getenv('MYSQL_DATABASE', 'db_A060'),
|
||||
'charset': 'utf8mb4'
|
||||
}
|
||||
|
||||
print(f"Host: {db_config['host']}")
|
||||
print(f"Port: {db_config['port']}")
|
||||
print(f"Database: {db_config['database']}")
|
||||
print(f"User: {db_config['user']}")
|
||||
print("-" * 60)
|
||||
|
||||
try:
|
||||
# Connect to database
|
||||
connection = pymysql.connect(**db_config)
|
||||
cursor = connection.cursor()
|
||||
|
||||
print("[OK] Successfully connected to database")
|
||||
|
||||
# List all tables
|
||||
print("\n[1] Listing all todo tables:")
|
||||
cursor.execute("SHOW TABLES LIKE 'todo%'")
|
||||
tables = cursor.fetchall()
|
||||
|
||||
if tables:
|
||||
for table in tables:
|
||||
print(f" - {table[0]}")
|
||||
else:
|
||||
print(" No todo tables found")
|
||||
|
||||
# Check todo_item table
|
||||
print("\n[2] Checking todo_item table:")
|
||||
cursor.execute("SELECT COUNT(*) FROM todo_item")
|
||||
count = cursor.fetchone()[0]
|
||||
print(f" Total records: {count}")
|
||||
|
||||
if count > 0:
|
||||
print("\n Sample data from todo_item:")
|
||||
cursor.execute("""
|
||||
SELECT id, title, status, priority, due_date, creator_ad
|
||||
FROM todo_item
|
||||
ORDER BY created_at DESC
|
||||
LIMIT 5
|
||||
""")
|
||||
items = cursor.fetchall()
|
||||
for item in items:
|
||||
print(f" - {item[0][:8]}... | {item[1][:30]}... | {item[2]} | {item[5]}")
|
||||
|
||||
# Check todo_user_pref table
|
||||
print("\n[3] Checking todo_user_pref table:")
|
||||
cursor.execute("SELECT COUNT(*) FROM todo_user_pref")
|
||||
count = cursor.fetchone()[0]
|
||||
print(f" Total users: {count}")
|
||||
|
||||
if count > 0:
|
||||
print("\n Sample users:")
|
||||
cursor.execute("""
|
||||
SELECT ad_account, display_name, email
|
||||
FROM todo_user_pref
|
||||
LIMIT 5
|
||||
""")
|
||||
users = cursor.fetchall()
|
||||
for user in users:
|
||||
print(f" - {user[0]} | {user[1]} | {user[2]}")
|
||||
|
||||
# Check todo_item_responsible table
|
||||
print("\n[4] Checking todo_item_responsible table:")
|
||||
cursor.execute("SELECT COUNT(*) FROM todo_item_responsible")
|
||||
count = cursor.fetchone()[0]
|
||||
print(f" Total assignments: {count}")
|
||||
|
||||
# Check todo_item_follower table
|
||||
print("\n[5] Checking todo_item_follower table:")
|
||||
cursor.execute("SELECT COUNT(*) FROM todo_item_follower")
|
||||
count = cursor.fetchone()[0]
|
||||
print(f" Total followers: {count}")
|
||||
|
||||
cursor.close()
|
||||
connection.close()
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("[OK] Database connection test successful!")
|
||||
print("=" * 60)
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"\n[ERROR] Database connection failed: {str(e)}")
|
||||
print(f"Error type: {type(e).__name__}")
|
||||
return False
|
||||
|
||||
def create_sample_todo():
|
||||
"""Create a sample todo item for testing"""
|
||||
print("\n" + "=" * 60)
|
||||
print("Creating Sample Todo Item")
|
||||
print("=" * 60)
|
||||
|
||||
db_config = {
|
||||
'host': os.getenv('MYSQL_HOST', 'mysql.theaken.com'),
|
||||
'port': int(os.getenv('MYSQL_PORT', 33306)),
|
||||
'user': os.getenv('MYSQL_USER', 'A060'),
|
||||
'password': os.getenv('MYSQL_PASSWORD', 'WLeSCi0yhtc7'),
|
||||
'database': os.getenv('MYSQL_DATABASE', 'db_A060'),
|
||||
'charset': 'utf8mb4'
|
||||
}
|
||||
|
||||
try:
|
||||
connection = pymysql.connect(**db_config)
|
||||
cursor = connection.cursor()
|
||||
|
||||
# Generate a UUID
|
||||
import uuid
|
||||
todo_id = str(uuid.uuid4())
|
||||
|
||||
# Insert sample todo
|
||||
sql = """
|
||||
INSERT INTO todo_item
|
||||
(id, title, description, status, priority, due_date, created_at, creator_ad, creator_display_name, creator_email, starred)
|
||||
VALUES
|
||||
(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
|
||||
"""
|
||||
|
||||
values = (
|
||||
todo_id,
|
||||
'Test Todo Item - ' + datetime.now().strftime('%Y-%m-%d %H:%M'),
|
||||
'This is a test todo item created from Python script',
|
||||
'NEW',
|
||||
'MEDIUM',
|
||||
'2025-09-15',
|
||||
datetime.now(),
|
||||
'test_user',
|
||||
'Test User',
|
||||
'test@panjit.com.tw',
|
||||
False
|
||||
)
|
||||
|
||||
cursor.execute(sql, values)
|
||||
connection.commit()
|
||||
|
||||
print(f"[OK] Created todo item with ID: {todo_id}")
|
||||
|
||||
cursor.close()
|
||||
connection.close()
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"[ERROR] Failed to create todo: {str(e)}")
|
||||
return False
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Test database connection
|
||||
if test_db_connection():
|
||||
# Ask if user wants to create sample data
|
||||
response = input("\nDo you want to create a sample todo item? (y/n): ")
|
||||
if response.lower() == 'y':
|
||||
create_sample_todo()
|
||||
else:
|
||||
print("\n[WARNING] Please check your database configuration in .env file")
|
||||
sys.exit(1)
|
Reference in New Issue
Block a user