Files
emailsystem/app/models/__init__.py
2025-02-25 19:50:00 +08:00

46 lines
1.2 KiB
Python

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']