from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_cors import CORS
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://admin:[email protected]/admin'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
app = Flask(__name__)
migrate = Migrate(app, db)
CORS(app)
class MtConfig(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), comment='配置名称')
content = db.Column(db.String(120), comment='配置内容')
remark = db.Column(db.String(120), comment='备注')
def to_dict(self):
return {
'id': self.id,
'name': self.name,
'content': self.content,
'remark': self.remark
}
@app.route('/')
def index():
return '欢迎使用我的 Flask API!'
if __name__ == '__main__':
app.run(debug=True, port=6789)
# 迁移脚本
# flask db init # 初始化迁移目录
# flask db migrate -m "Initial migration." # 创建迁移脚本
# flask db upgrade
详细解释:
from flask import Flask # 从 flask 库导入 Flask 类
from flask_sqlalchemy import SQLAlchemy # 从 flask_sqlalchemy 库导入 SQLAlchemy 类
from flask_migrate import Migrate # 从 flask_migrate 库导入 Migrate 类
from flask_cors import CORS # 从 flask_cors 库导入 CORS 函数
app = Flask(__name__) # 创建一个 Flask 应用实例
# 配置数据库的 URI,指定数据库的地址和登录信息
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://[用户名]:[密码]@[地址]/[数据库名]'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # 设置不追踪对象的修改,减少内存消耗
db = SQLAlchemy(app) # 创建 SQLAlchemy 对象,用于数据库操作
migrate = Migrate(app, db) # 创建 Migrate 对象,用于数据库迁移
CORS(app) # 为应用启用跨域资源共享
class MtConfig(db.Model): # 定义一个数据库模型 MtConfig
id = db.Column(db.Integer, primary_key=True) # 定义一个整型主键列
name = db.Column(db.String(80), comment='配置名称') # 定义一个字符串列,存储配置名称
content = db.Column(db.String(120), comment='配置内容') # 定义一个字符串列,存储配置内容
remark = db.Column(db.String(120), comment='备注') # 定义一个字符串列,用于存储备注
def to_dict(self): # 将模型转换为字典
return {
'id': self.id,
'name': self.name,
'content': self.content,
'remark': self.remark
}
@app.route('/') # 定义根路由
def index(): # 定义对应的视图函数
return '欢迎使用我的 Flask API!' # 返回欢迎信息
if __name__ == '__main__': # 当模块作为主程序运行时
app.run(debug=True, port=6789) # 启动 Flask 应用,开启调试模式,并设置端口为 6789
# 迁移脚本
# flask db init # 初始化迁移目录
# flask db migrate -m "Initial migration." # 创建迁移脚本
# flask db upgrade # 应用迁移到数据库
使用 Flask 作为框架和搭配 Flask-SQLAlchemy、Flask-Migrate、Flask-CORS 等扩展有以下几个显著优点:
轻量级和灵活性:Flask 是一个微框架,它非常轻量级并提供了必要的工具来构建Web应用程序。这使得它非常适合快速开发和原型设计,同时也容易扩展和自定义。
简单易学:Flask 的代码简洁明了,易于理解和学习,特别适合新手入门。
扩展性:通过各种扩展,Flask 可以轻松地添加新的功能,如数据库操作(Flask-SQLAlchemy)、数据库迁移(Flask-Migrate)、跨域资源共享(Flask-CORS)等。
灵活的数据库集成:Flask-SQLAlchemy 提供了一个高级抽象的数据库操作层,支持多种数据库后端,使得数据库操作更加方便和灵活。
数据库迁移支持:Flask-Migrate 基于 Alembic,为 Flask 应用提供了强大的数据库迁移工具,这对于数据库的版本控制和迁移非常有帮助。
跨域资源共享(CORS)支持:Flask-CORS 扩展允许跨域请求,这在构建API时特别重要,因为它可以使得不同的前端应用能够安全地访问您的API。
社区支持和生态系统:Flask 有一个活跃的社区,提供了大量的文档、教程和第三方扩展,这使得解决问题和学习变得更加容易。
适用于多种项目规模:从小型个人项目到大型企业应用,Flask 的灵活性使它适用于各种规模的项目。
当然可以,以下是一份基于您之前的要求和示例的模型创建规范文档。这份文档旨在指导开发者如何在使用 Flask-SQLAlchemy 时创建和维护数据库模型。
MtUserLoginLog
。__tablename__
属性明确指定表名,表名小写,单词之间使用下划线分隔。例如:__tablename__ = 'mt_user_login_log'
。id
,类型为 db.Integer
。db.String
、db.Integer
、db.DateTime
等。db.String(255)
。nullable=False
。unique=True
。default=datetime.utcnow
。comment
参数为字段添加注释,说明字段用途。例如:comment='用户ID'
。to_dict
方法:为每个模型定义 to_dict
方法,将模型实例转换为字典。该方法返回一个字典,其中包含模型的所有字段及其值。class MtUserLoginLog(db.Model):
__tablename__ = 'mt_user_login_log'
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, comment='用户ID')
# ... 其他字段定义 ...
def to_dict(self):
return {
'id': self.id,
'user_id': self.user_id,
# ... 其他字段 ...
}
本文档提供了基本的模型创建规范。开发者应根据具体项目的需求和最佳实践适当调整这些规范。在实际开发过程中,保持代码的一致性和可读性非常重要。