Flask-SQLAlchemy 基于一个base表 - 动态创建使用相同字段的其他业务表

devtools/2025/1/16 17:49:02/

1 安装

首先,确保您安装了 Flask 和 SQLAlchemy,以及 MySQL 的驱动程序(例如 mysql-connector-python 或 PyMySQL):

pip install Flask Flask-SQLAlchemy mysql-connector-python

2 创建项目结构

创建一个简单的项目结构:

my_flask_app/
│
├── app.py
└── config.py

3 配置文件 (config.py)

在 config.py 中设置 MySQL 数据库的连接信息:

python">class Config:SQLALCHEMY_DATABASE_URI = 'mysql+mysqlconnector://username:password@localhost/db_name'SQLALCHEMY_TRACK_MODIFICATIONS = False

请将 username、password 和 db_name 替换为您的 MySQL 数据库凭据。

4 创建应用和模型 (app.py)

在 app.py 中实现创建表的功能:

python">from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy
from config import Configapp = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)# 定义父表 Base
class Base(db.Model):__tablename__ = 'base'id = db.Column(db.Integer, primary_key=True)name = db.Column(db.String(50), nullable=False)age = db.Column(db.Integer, nullable=False)# 创建基础表
@app.before_first_request
def create_base_table():db.create_all()  # 创建所有模型的表,包括 Base@app.route('/create_table/<table_name>', methods=['POST'])
def create_table(table_name):# 使用动态模型创建与 Base 相同的表class DynamicTable(db.Model):__tablename__ = table_name  # 设置表名为传入的参数id = db.Column(db.Integer, primary_key=True)name = db.Column(db.String(50), nullable=False)age = db.Column(db.Integer, nullable=False)# 创建动态表db.create_all()  # 创建新表return jsonify({"message": f"Table '{table_name}' created successfully!"})@app.route('/add_base', methods=['POST'])
def add_base():data = request.jsonnew_entry = Base(name=data['name'], age=data['age'])db.session.add(new_entry)db.session.commit()return jsonify({"message": "Entry added to base table!"})if __name__ == '__main__':app.run(debug=True)

5 运行应用

确保所有代码已保存,然后在项目目录中运行应用:

python app.py

6 测试功能

您可以使用 Postman 或 curl 来测试 API。

  • 创建 base 表(在应用启动时自动创建):
    • 访问 http://127.0.0.1:5000/ 不需要任何操作。
    • 添加 base 表中的数据:
curl -X POST -H "Content-Type: application/json" -d '{"name": "John Doe", "age": 30}' http://127.0.0.1:5000/add_base
  • 根据给定的表名创建新表:
curl -X POST http://127.0.0.1:5000/create_table/new_table_name

将 new_table_name 替换为您希望创建的表名。


http://www.ppmy.cn/devtools/151013.html

相关文章

【数模学习笔记】插值算法和拟合算法

声明&#xff1a;以下笔记中的图片以及内容 均整理自“数学建模学习交流”清风老师的课程资料&#xff0c;仅用作学习交流使用 文章目录 插值算法定义三个类型插值举例插值多项式分段插值三角插值 一般插值多项式原理拉格朗日插值法龙格现象分段线性插值 牛顿插值法 Hermite埃尔…

java集合面试题

java集合面试题 java集合面试题java集合框架的基础接口有哪些&#xff1f;单列集合的基础接口List, Set, Map 是否继承自 Collection 接口List、Map、Set 三个接口&#xff0c;存取元素时&#xff0c;各有什么特点&#xff1f;你所知道的集合类都有哪些&#xff1f;主要方法&am…

(即插即用模块-Attention部分) 四十四、(ICIP 2022) HWA 半小波注意力

文章目录 1、Half Wavelet Attention2、代码实现 paper&#xff1a;HALFWAVELET ATTENTION ON M-NET FOR LOW-LIGHT IMAGE ENHANCEMENT Code&#xff1a;https://github.com/FanChiMao/HWMNet 1、Half Wavelet Attention 传统的图像增强方法主要关注图像在空间域的特征信息&am…

DFT可测性设置与Tetramax测试笔记

1 DFT 1.1 DFT类型 1、扫描链&#xff08;SCAN&#xff09;&#xff1a; 扫描路径法是一种针对时序电路芯片的DFT方案.其基本原理是时序电路可以模型化为一个组合电路网络和带触发器(Flip-Flop&#xff0c;简称FF)的时序电路网络的反馈。 Scan 包括两个步骤&#xff0c;scan…

蓝桥杯第二天学习笔记

二维码生成&#xff1a; import qrcode from PIL import Image, ImageDraw, ImageFont import osdef generate_custom_qr_code(data, qr_file_path, logo_file_pathNone, textNone):# 创建QRCode对象qr qrcode.QRCode(version1,error_correctionqrcode.constants.ERROR_CORRE…

Qt 各版本选择

嵌入式推荐用 Qt4.8&#xff0c;打包的程序小&#xff1a;Qt4.8.7是Qt4的终结版本&#xff0c;是Qt4系列版本中最稳定最经典的 最后支持xp系统的长期支持版本&#xff1a;Qt5.6.3&#xff1b;Qt5.7.0是最后支持xp系统的非长期支持版本。 最后提供mysql数据库插件的版本&#xf…

【机器学习:十五、神经网络的编译和训练】

1. TensorFlow实现代码 TensorFlow 是深度学习中最为广泛使用的框架之一&#xff0c;提供了灵活的接口来构建、编译和训练神经网络。以下是实现神经网络的一个完整代码示例&#xff0c;以“手写数字识别”为例&#xff1a; import tensorflow as tf from tensorflow.keras im…

自动驾驶ADAS算法--测试工程环境搭建

测试环境 1、vs2022社区版本 2、onnx 3、opencv455 测试环境搭建和需要的文件下载 通过网盘分享的文件&#xff1a;附件 链接: https://pan.baidu.com/s/1F79g66nKa1jKoeeuY2Iygg 提取码: xwy8 环境搭建和配置 下载上述的文件并解压&#xff0c;解压后打开工程配置工程…