Files
jobs/setup.py
georg.sinn-schirwitz 042a196718 remove caching
2025-09-08 14:44:46 +02:00

61 lines
2.1 KiB
Python

#!/usr/bin/env python
"""
MySQL utility script for initializing database and showing row counts.
Usage (PowerShell):
# Ensure MySQL database and tables
python setup.py mysql-init
# Show row counts (MySQL only)
python setup.py counts
"""
import sys
from sqlalchemy import create_engine, text
from web.utils import get_mysql_config
cmd = sys.argv[1] if len(sys.argv) > 1 else "help"
try:
if cmd == "mysql-init":
cfg = get_mysql_config()
root_url = f"mysql+pymysql://{cfg['user']}:{cfg['password']}@{cfg['host']}:{cfg['port']}/"
dbname = cfg["database"]
root_engine = create_engine(root_url, future=True)
with root_engine.begin() as conn:
conn.execute(text(
f"CREATE DATABASE IF NOT EXISTS `{dbname}` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"))
mysql_url = f"mysql+pymysql://{cfg['user']}:{cfg['password']}@{cfg['host']}:{cfg['port']}/{dbname}?charset=utf8mb4"
mysql_engine = create_engine(mysql_url, future=True)
from web.db import Base
Base.metadata.create_all(mysql_engine)
print("MySQL database and tables ensured")
sys.exit(0)
elif cmd == "counts":
cfg = get_mysql_config()
url = f"mysql+pymysql://{cfg['user']}:{cfg['password']}@{cfg['host']}:{cfg['port']}/{cfg['database']}?charset=utf8mb4"
engine = create_engine(url, future=True)
with engine.begin() as conn:
for table in [
"users",
"regions",
"keywords",
"user_regions",
"user_keywords",
"job_listings",
"job_descriptions",
"cached_pages",
"user_interactions",
]:
try:
n = conn.execute(text(f"SELECT COUNT(*) FROM {table}"))
print(f"{table}: {list(n)[0][0]}")
except Exception as e:
print(f"{table}: error {e}")
sys.exit(0)
else:
print(__doc__)
sys.exit(0)
except Exception as e:
print(f"Error: {e}")
sys.exit(1)