开发笔记自用常规Flask基础框架使用flask_sqlalchemy和pymysql操作数据库,使用flask_cors开放全局cors

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 时创建和维护数据库模型。

我的模型创建规范习惯文档

1. 命名规范
  • 模型命名:使用驼峰命名法,首字母大写。例如:MtUserLoginLog
  • 表名:使用 __tablename__ 属性明确指定表名,表名小写,单词之间使用下划线分隔。例如:__tablename__ = 'mt_user_login_log'
2. 字段定义
  • 主键:每个模型应有一个主键,通常命名为 id,类型为 db.Integer
  • 字段类型:根据数据的特性选择合适的字段类型,如 db.Stringdb.Integerdb.DateTime 等。
  • 字段命名:字段名小写,单词之间使用下划线分隔。
  • 长度限制:对于字符串类型的字段,明确指定长度。例如:db.String(255)
  • 非空约束:如有必要,添加非空约束 nullable=False
  • 唯一性约束:如有必要,添加唯一性约束 unique=True
  • 默认值:如有必要,为字段指定默认值。例如:default=datetime.utcnow
  • 注释:使用 comment 参数为字段添加注释,说明字段用途。例如:comment='用户ID'
3. 关系定义
  • 如有必要,定义模型间的关系(一对多、多对多等)。
4. 方法定义
  • to_dict 方法:为每个模型定义 to_dict 方法,将模型实例转换为字典。该方法返回一个字典,其中包含模型的所有字段及其值。
5. 示例
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,
            # ... 其他字段 ...
        }
6. 数据库迁移和更新
  • 使用 Flask-Migrate 管理数据库迁移。
  • 在模型发生变化后,及时生成迁移脚本并应用到数据库。
7. 安全性注意事项
  • 避免在模型或数据库中存储敏感信息,如密码或私钥。
  • 对于需要加密的字段,确保在存储前进行加密。

总结

本文档提供了基本的模型创建规范。开发者应根据具体项目的需求和最佳实践适当调整这些规范。在实际开发过程中,保持代码的一致性和可读性非常重要。

你可能感兴趣的:(笔记,flask,数据库)