Download Backend/database/init_db.py from 0xarchit/UrbanLens: direct link, hf CLI and curl.
- Browser
- Download file 1.37 kB
-
https://huggingface.co/spaces/0xarchit/UrbanLens/resolve/main/Backend/database/init_db.py
- Command line
-
hf download hf://spaces/0xarchit/UrbanLens/Backend/database/init_db.py
-
curl -L -o init_db.py https://huggingface.co/spaces/0xarchit/UrbanLens/resolve/main/Backend/database/init_db.py
1.37 kB
| import asyncio | |
| import logging | |
| from sqlalchemy.ext.asyncio import create_async_engine | |
| from Backend.core.config import settings | |
| from Backend.database.models import Base | |
| from Backend.database.seed import seed_data | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| async def init_models(): | |
| """Drops and recreates all tables, then seeds initial data.""" | |
| logger.info("Initializing database...") | |
| database_url = settings.database_url.replace("port=6543", "port=5432").replace("postgresql://", "postgresql+asyncpg://") | |
| engine = create_async_engine( | |
| database_url, | |
| echo=True, | |
| connect_args={ | |
| "statement_cache_size": 0, | |
| "prepared_statement_cache_size": 0, | |
| } | |
| ) | |
| async with engine.begin() as conn: | |
| logger.info("Dropping existing tables...") | |
| logger.info("Creating new tables...") | |
| await conn.run_sync(Base.metadata.create_all) | |
| logger.info("Schema initialized. Seeding data...") | |
| try: | |
| await seed_data(engine) | |
| logger.info("Seeding completed successfully!") | |
| except Exception as e: | |
| logger.error(f"Seeding failed: {e}") | |
| await engine.dispose() | |
| logger.info("Database initialization finished.") | |
| if __name__ == "__main__": | |
| asyncio.run(init_models()) | |