46 lines
1.2 KiB
Python
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'] |