refactor(api): 重构数据库访问为SQLAlchemy绑定的session
- 统一移除手动创建的数据库session,统一使用models模块中的db.session - 修正项目创建接口,增加开始和结束日期的格式验证与处理 - 更新导入项目接口,使用枚举类型校验项目类型并优化异常处理 - 更新统计接口,避免多次查询假期数据,优化日期字符串处理 - 删除回滚前多余的session关闭调用,改为使用db.session.rollback() - app.py中重构数据库初始化:统一配置SQLAlchemy,动态创建数据库路径和表 - 项目模型新增开始日期和结束日期字段支持 - 添加导入批次历史记录模型支持 - 优化工具函数中日期类型提示,移除无用导入 - 更新requirements.txt依赖版本回退,确保兼容性 - 前端菜单添加导入历史导航入口,实现页面访问路由绑定
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
from flask import Flask, render_template
|
||||
from flask_cors import CORS
|
||||
from sqlalchemy import create_engine
|
||||
from backend.models.models import Base
|
||||
from backend.api.projects import projects_bp
|
||||
from backend.api.timerecords import timerecords_bp
|
||||
from backend.api.statistics import statistics_bp
|
||||
from models.models import db
|
||||
from api.projects import projects_bp
|
||||
from api.timerecords import timerecords_bp
|
||||
from api.statistics import statistics_bp
|
||||
from api.data_import import data_import_bp
|
||||
import os
|
||||
|
||||
def create_app():
|
||||
@@ -15,17 +15,27 @@ def create_app():
|
||||
# 启用CORS支持
|
||||
CORS(app)
|
||||
|
||||
# 确保数据目录存在
|
||||
os.makedirs('data', exist_ok=True)
|
||||
# 数据库配置
|
||||
# 获取项目根目录下的data文件夹路径
|
||||
data_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'data')
|
||||
os.makedirs(data_dir, exist_ok=True)
|
||||
db_path = os.path.join(data_dir, 'timetrack.db')
|
||||
|
||||
# 创建数据库表
|
||||
engine = create_engine('sqlite:///data/timetrack.db')
|
||||
Base.metadata.create_all(engine)
|
||||
app.config['SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{db_path}'
|
||||
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
|
||||
|
||||
# 初始化数据库
|
||||
db.init_app(app)
|
||||
|
||||
# 在应用上下文中创建数据库表
|
||||
with app.app_context():
|
||||
db.create_all()
|
||||
|
||||
# 注册蓝图
|
||||
app.register_blueprint(projects_bp)
|
||||
app.register_blueprint(timerecords_bp)
|
||||
app.register_blueprint(statistics_bp)
|
||||
app.register_blueprint(data_import_bp)
|
||||
|
||||
# 主页路由
|
||||
@app.route('/')
|
||||
@@ -44,6 +54,10 @@ def create_app():
|
||||
def statistics():
|
||||
return render_template('statistics.html')
|
||||
|
||||
@app.route('/import')
|
||||
def import_page():
|
||||
return render_template('import.html')
|
||||
|
||||
return app
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
Reference in New Issue
Block a user