MySQL Backend
Full MySQL/MariaDB runtime backend — not just a migration target.
Fresh Install
CREATE DATABASE noba CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
pip install 'PyMySQL>=1.1' 'DBUtils>=3.1'
export DATABASE_URL=mysql://noba:yourpassword@localhost:3306/noba
noba-web
Schema is auto-created on first run.
Migrating from SQLite
DATABASE_URL=mysql://noba:yourpassword@localhost:3306/noba \
python3 scripts/migrate-to-mysql.py
Uses INSERT IGNORE — safe to re-run; duplicate rows are silently skipped.
SQL Translation
?→%sINSERT OR REPLACE→ON DUPLICATE KEY UPDATEINSERT OR IGNORE→INSERT IGNOREAUTOINCREMENT→AUTO_INCREMENT
Connection Pooling
DBUtils PooledDB with mincached/maxcached bounds. Per-thread read adapters from the pool, dedicated write connection with transaction support.