为了ChatGPT我真的是拼了

一、学习目标
- 掌握Python快捷的web开发方法和过程
- 掌握Flask开发webapi的方法
- 掌握Flask开发数据库处理的方法
- 搭建起与bootstrap5的快速开发脚手架
- 设计RACM的初步架构
- 实现好用户、角色、权限、组织管理的后端框架
- 沉淀出应用模块的快速开发方法(需求、设计、代码生成、调试、测试、发布的方法)
- 搭建起定时执行任务的框架及方法
- 搭建起报表统计的框架及方法
预计学习周期:2周
二、学习思考
Flask学习 原理与机制 应用启动 前后端交互方式 安装部署 如何在生成环境中安装 如何在开发环境中开发调试 如何在测试环境中安装调试 如何使用专门的应用服务器部署 如何在Docker中部署 HTTP Request Response 安全秘钥 Session Cookie 路由的设计 路由的形式有哪些 如何设计路由 Jinjia2 如何渲染列表 如何结合后端分页 如何提交表单验证数据 如何模块化设计 如何复用设计(模板继承) 数据库操作 如何创建表 如何初始化数据 如何ORM开发 如何备份 如何迁移数据 高级 集成定时任务管理功能 集成代码生成器功能 集成RACB用户及权限管理功能 集成轻量级规则引擎 集成工作流实现

三、学习记录
一、路由详解
模板资料:欢迎来到 Jinja2 — Jinja2 中文手册 2.8 documentation (pythontab.com)
二、蓝图详解
好资源: Flask 之一蓝图Blueprint详解 - NQ31 - 博客园 (cnblogs.com)
三、请求钩子
重点:这个blog写的教程很清晰,看了后很好理解了
flask 请求扩展(钩子函数)和中间件 - NQ31 - 博客园 (cnblogs.com)
四、flask restful 风格的api
重点:这个blog教程写得很清晰,要解决的事情,是将很多的方法要重用起来,这样仅仅只关注注册就好。
Python flask-restful框架讲解 - 尘世风 - 博客园 (cnblogs.com)
Flask教程(12)--RESTful-API - 掘金 (juejin.cn)
五、实例
学习好资源:编程之路的全部内容 - 腾讯云开发者社区-腾讯云 (tencent.com)
四、chatGPT学习记录
4.1 数据库相关
4.1.1 数据库设计及开发的思路
-
用 Mysql 数据库
-
使用pymysql 作为数据连接的驱动
-
使用SQLAlchemy2.0作为数据库操作的包
-
先设计数据库(包括数据库关系也提前设计好)
-
后生成数据模型,再进行开发
-
可以使用sqlacodegen 生成数据模型
shell <!--生成映射模型,即Class模型--> sqlacodegen --outfile=models\models.py mysql+pymysql://root:fymj@db&2019@192.168.6.186:3306/fy_flask <!--生成命令模型,即Table模型--> sqlacodegen --outfile=models\models.py mysql://root:fymj@db&2019@192.168.6.186:3306/fy_flask --tables teacher,student ----noclasses -
对于查询类的功能,直接使用Core(原生SQL的方式)
-
对于增加、修改、删除的操作使用ORM模式
-
最后绑定页面调试
4.2.2 ORM中与数据库对应的数据类型

问答1:
我要编写一个flask数据库初始化部分,我的要求是:1-在flask程序目录下创建一个conf目录,在该目录下面创建一个app.json文件,该文件内定义数据库的相关配置信息;2-flask应用启动时使用该数据库相关配置信息创建数据库连接池
ChatGPT:
下面是一份代码,你可以根据需要做修改:
pythonCopy codefrom flask import Flask
import json
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# 读取配置文件
with open('conf/app.json') as f:
config = json.load(f)
# 设置数据库链接字符串
app.config['SQLALCHEMY_DATABASE_URI'] = config['SQLALCHEMY_DATABASE_URI']
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 创建数据库连接池
db = SQLAlchemy(app)
# 定义数据模型
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
# 创建数据表
db.create_all()
conf/app.json的内容示例如下:
jsonCopy code{
"SQLALCHEMY_DATABASE_URI": "sqlite:////tmp/test.db"
}
其中,"SQLALCHEMY_DATABASE_URI"的值根据实际情况进行修改,例如更换为MySQL:
perlCopy code{
"SQLALCHEMY_DATABASE_URI": "mysql://user:password@localhost/dbname"
}
问答2:flask-sqlalchemy使用原生SQL的方法
ChatGPT:
Flask-SQLAlchemy 提供了两种方法执行原生 SQL 语句:
- 使用
db.engine.execute(sql),其中db是你的 Flask-SQLAlchemy 实例,sql是原生 SQL 语句字符串。例如:
pythonCopy codefrom flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)
result = db.engine.execute("SELECT * FROM table")
for row in result:
print(row)
- 使用 Flask-SQLAlchemy 的
text类,该类允许您使用原生 SQL 语句创建 SQLAlchemy 语句对象。例如:
pythonCopy codefrom flask import Flask
from flask_sqlalchemy import SQLAlchemy, text
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)
stmt = text("SELECT * FROM table")
result = db.engine.execute(stmt)
for row in result:
print(row)
附:一些资料
欢迎来到 Jinja2 — Jinja2 中文手册 2.8 documentation (pythontab.com)
欢迎来到 Flask 的世界 — Flask中文文档(2.1.x) (dormousehole.readthedocs.io)
Flask-SQLAlchemy — Flask-SQLAlchemy 2.0 documentation (pythondoc.com)
sqlalchemy2.0使用记录 - 简书 (jianshu.com)
Python ORM之SQLAlchemy全面指南 - 知乎 (zhihu.com)
SQLAlchemy - The Database Toolkit for Python
SQLAlchemy 执行原生 SQL语句_stone0823的博客-CSDN博客_sqlalchemy执行原生sql
Python库之SQLAlchemy - 冷冰若水 - 博客园 (cnblogs.com)
作者: CLP ; 日期: 2022-9-17 ; 地点: 武汉; 天气: 晴
QQ: 53258372; Mail : 53258372@QQ.com
微信:
