from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker, scoped_session import os import sys # 修改相对导入为绝对导入 sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) from config import active_config # 创建数据库引擎 engine = create_engine(active_config.SQLALCHEMY_DATABASE_URI) # 创建会话工厂 session_factory = sessionmaker(bind=engine) Session = scoped_session(session_factory) # 创建模型基类 Base = declarative_base() # 获取数据库会话 def get_session(): """获取数据库会话""" return Session() # 初始化数据库 def init_db(): """初始化数据库,创建所有表""" # 导入所有模型以确保它们被注册 from .domain import Domain from .mailbox import Mailbox from .email import Email from .attachment import Attachment # 创建表 Base.metadata.create_all(engine) return get_session() # 导出模型类 from .domain import Domain from .mailbox import Mailbox from .email import Email from .attachment import Attachment __all__ = ['Base', 'get_session', 'init_db', 'Domain', 'Mailbox', 'Email', 'Attachment']