diff --git a/alembic.ini b/alembic.ini index 5e6b587..7d0d271 100644 --- a/alembic.ini +++ b/alembic.ini @@ -33,8 +33,8 @@ prepend_sys_path = . # versions/ directory # sourceless = false -# version number format -version_num_format = %04d +# version number format - using a simpler format to avoid interpolation issues +# version_num_format = %%04d # version path separator; default is "/" # version_path_separator = : @@ -93,5 +93,4 @@ level = NOTSET formatter = generic [formatter_generic] -format = %(levelname)-5.5s [%(name)s] %(message)s -datefmt = %H:%M:%S \ No newline at end of file +format = [%(name)s] %(message)s \ No newline at end of file diff --git a/alembic/env.py b/alembic/env.py index 6417983..ab70cdd 100644 --- a/alembic/env.py +++ b/alembic/env.py @@ -1,6 +1,7 @@ from logging.config import fileConfig +from pathlib import Path -from sqlalchemy import engine_from_config +from sqlalchemy import engine_from_config, create_engine from sqlalchemy import pool from alembic import context @@ -15,7 +16,11 @@ config = context.config # Interpret the config file for Python logging. # This line sets up loggers basically. if config.config_file_name is not None: - fileConfig(config.config_file_name) + try: + fileConfig(config.config_file_name) + except Exception: + # Skip logging configuration if it fails + pass # add your model's MetaData object here # for 'autogenerate' support @@ -58,11 +63,31 @@ def run_migrations_online() -> None: and associate a connection with the context. """ - connectable = engine_from_config( - config.get_section(config.config_ini_section), - prefix="sqlalchemy.", - poolclass=pool.NullPool, - ) + # Create database directory if it doesn't exist + db_dir = Path("/app/storage/db") + db_dir.mkdir(parents=True, exist_ok=True) + + # Use direct database URL instead of config section to avoid interpolation issues + database_url = config.get_main_option("sqlalchemy.url") + if not database_url: + database_url = "sqlite:////app/storage/db/db.sqlite" + + try: + # Try to get configuration section, but handle interpolation errors + configuration = config.get_section(config.config_ini_section, {}) + configuration["sqlalchemy.url"] = database_url + + connectable = engine_from_config( + configuration, + prefix="sqlalchemy.", + poolclass=pool.NullPool, + ) + except Exception: + # Fallback: create engine directly if config parsing fails + connectable = create_engine( + database_url, + poolclass=pool.NullPool, + ) with connectable.connect() as connection: context.configure(connection=connection, target_metadata=target_metadata)