Files
ZDXX/2.1版本/app.py

58 lines
1.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# app.py
import os
import sys
from flask import Flask
from extensions import db, cors # ✅ 从 extensions 导入
from models import Device, DeviceHistory, MaintenanceLog # 导入模型以便 SQLAlchemy 识别
from routes.api import api_bp
# 解决 Windows 下控制台输出乱码问题
sys.stdout.reconfigure(encoding='utf-8')
def create_app():
app = Flask(__name__)
# 1. 配置路径
basedir = os.path.abspath(os.path.dirname(__file__))
instance_path = os.path.join(basedir, 'instance')
if not os.path.exists(instance_path):
os.makedirs(instance_path)
print(f"📁 检测到目录不存在,已自动创建: {instance_path}")
db_path = os.path.join(instance_path, 'devices.db')
# 配置
app.config['SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{db_path}'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['JSON_AS_ASCII'] = False
# 2. 初始化插件 (使用 init_app 模式)
cors.init_app(app) # ✅
db.init_app(app) # ✅
# 3. 注册蓝图
# 注意api.py 里已经写了 url_prefix='/api',这里不要再写,否则变 /api/api/...
app.register_blueprint(api_bp)
# 4. 初始化数据库表
with app.app_context():
db.create_all()
return app
app = create_app()
@app.shell_context_processor
def make_shell_context():
return {
'db': db,
'Device': Device,
'DeviceHistory': DeviceHistory,
'MaintenanceLog': MaintenanceLog
}
if __name__ == '__main__':
print("🚀 服务正在启动: http://127.0.0.1:5000")
app.run(debug=True, host='0.0.0.0', port=5000)