Spaces:
Running
Running
| # database_sql.py | |
| import os | |
| from sqlalchemy import create_engine | |
| from sqlalchemy.orm import sessionmaker | |
| from models_sql import Base | |
| # 核心:优先读取环境变量中的 PostgreSQL 数据库连接 | |
| SQLALCHEMY_DATABASE_URL = os.environ.get("DATABASE_URL", "sqlite:////tmp/comfy_financial.db") | |
| # 兼容性处理:只有在使用降级的 SQLite 时,才需要 check_same_thread=False | |
| connect_args = {"check_same_thread": False} if "sqlite" in SQLALCHEMY_DATABASE_URL else {} | |
| engine = create_engine(SQLALCHEMY_DATABASE_URL, connect_args=connect_args) | |
| SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) | |
| def init_sql_db(): | |
| # 启动时自动检查并在云端(或本地)建立缺失的表 | |
| Base.metadata.create_all(bind=engine) | |
| def get_db(): | |
| db = SessionLocal() | |
| try: | |
| yield db | |
| finally: | |
| db.close() |