111 lines
2.8 KiB
Python
111 lines
2.8 KiB
Python
"""
|
|
Setup script untuk initialize MySQL Database
|
|
Jalankan: python setup_db.py
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
from dotenv import load_dotenv
|
|
import pymysql
|
|
from pymysql import MySQLError
|
|
|
|
# Load environment variables
|
|
load_dotenv()
|
|
|
|
DB_HOST = os.environ.get('DB_HOST', 'localhost')
|
|
DB_PORT = int(os.environ.get('DB_PORT', '3306'))
|
|
DB_USER = os.environ.get('DB_USER', 'root')
|
|
DB_PASSWORD = os.environ.get('DB_PASSWORD', '')
|
|
DB_NAME = os.environ.get('DB_NAME', 'deteksi_pmk')
|
|
|
|
|
|
def create_database():
|
|
"""Create database if not exists"""
|
|
try:
|
|
# Connect to MySQL server (without specifying database)
|
|
if DB_PASSWORD:
|
|
conn = pymysql.connect(
|
|
host=DB_HOST,
|
|
port=DB_PORT,
|
|
user=DB_USER,
|
|
password=DB_PASSWORD,
|
|
charset='utf8mb4'
|
|
)
|
|
else:
|
|
conn = pymysql.connect(
|
|
host=DB_HOST,
|
|
port=DB_PORT,
|
|
user=DB_USER,
|
|
charset='utf8mb4'
|
|
)
|
|
|
|
cursor = conn.cursor()
|
|
|
|
# Create database
|
|
cursor.execute(f"CREATE DATABASE IF NOT EXISTS {DB_NAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci")
|
|
print(f"✓ Database '{DB_NAME}' created/verified")
|
|
|
|
conn.commit()
|
|
cursor.close()
|
|
conn.close()
|
|
|
|
return True
|
|
except MySQLError as e:
|
|
print(f"✗ Error creating database: {e}")
|
|
return False
|
|
|
|
|
|
def init_tables():
|
|
"""Initialize database tables using SQLAlchemy"""
|
|
try:
|
|
# Import after ensuring database exists
|
|
from utils.mysql_db import init_mysql_tables
|
|
|
|
init_mysql_tables()
|
|
print("✓ Database tables created/verified")
|
|
return True
|
|
except Exception as e:
|
|
print(f"✗ Error initializing tables: {e}")
|
|
return False
|
|
|
|
|
|
def main():
|
|
print("=" * 60)
|
|
print("MySQL Database Setup for Deteksi PMK")
|
|
print("=" * 60)
|
|
print()
|
|
print(f"Configuration:")
|
|
print(f" Host: {DB_HOST}")
|
|
print(f" Port: {DB_PORT}")
|
|
print(f" User: {DB_USER}")
|
|
print(f" Database: {DB_NAME}")
|
|
print()
|
|
|
|
# Step 1: Create database
|
|
print("Step 1: Creating database...")
|
|
if not create_database():
|
|
print("\n✗ Setup failed. Please check your MySQL connection settings in .env")
|
|
sys.exit(1)
|
|
|
|
print()
|
|
|
|
# Step 2: Initialize tables
|
|
print("Step 2: Initializing tables...")
|
|
if not init_tables():
|
|
print("\n✗ Setup failed. Please check your database configuration.")
|
|
sys.exit(1)
|
|
|
|
print()
|
|
print("=" * 60)
|
|
print("✓ Database setup completed successfully!")
|
|
print("=" * 60)
|
|
print()
|
|
print("Next steps:")
|
|
print("1. Make sure database is running")
|
|
print("2. Run: python app.py")
|
|
print()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|