项目结构
project/
│
├── app.py
├── instance/
│ └── database.db
├── templates/
│ └── index.html
├── static/
│ └── style.css
│ └── favicon.ico
└── database.db
首先创建目录,static 存放一些页面的样式或图标文件。templates存放静态页面。instance目录里会有自动创建的数据库文件。
由于本项目使用的是SQLite 数据库引擎,所以会自动创建到instance目录下
flask启动及上下文
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)
with app.app_context():
db.create_all()
在某些情况下,会存在报错
This typically means that you attempted to use functionality that needed
the current application. To solve this, set up an application context
with app.app_context(). See the documentation for more information.
这种报错代表需要 Flask 的应用上下文(application context),手动创建应用上下文(app.app_context()),确保代码在正确的上下文中运行。
with app.app_context():
try:
主机及端口设置
指定host及端口
app.run(debug=True,host=“127.0.0.1”, port=2225)
如果需要动态指定端口号,可以通过命令行参数或环境变量传递端口号。以下是使用命令行参数的示例:
import sys
if __name__ == '__main__':
# 从命令行参数获取端口号
if len(sys.argv) > 1:
port = int(sys.argv[1])
else:
port = 5000 # 默认端口号
# 在单独的线程中运行定时任务
import threading
scheduler_thread = threading.Thread(target=run_scheduler)
scheduler_thread.start()
# 启动 Flask 应用,使用指定的端口号
app.run(debug=True, port=port)
运行应用时,可以通过命令行指定端口号:
python app.py 5001 # 使用端口号 5001
模型文件
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class DailyResult(db.Model):
__tablename__ = 'daily_results'
id = db.Column(db.Integer, primary_key=True)
date = db.Column(db.String(10), nullable=False)
alarm_project = db.Column(db.String(100), nullable=False)
algorithm = db.Column(db.String(100), nullable=False)
alg_table = db.Column(db.String(100), nullable=False)
developer = db.Column(db.String(50), nullable=False)
status = db.Column(db.String(50), nullable=False)
模型文件中创建对应的表结构,再在主程序中引入模型
from models import db, DailyResult, CumulativeResu