首页 > 数据库 >【flask sqlalchemy】A,B两个模型,A是父级模型,B是子级模型。 B创建依赖A模型的id。 如何编写事物 ?

【flask sqlalchemy】A,B两个模型,A是父级模型,B是子级模型。 B创建依赖A模型的id。 如何编写事物 ?

时间:2024-04-28 10:56:41浏览次数:16  
标签:sqlalchemy name 父级 Column 模型 db session id

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = '数据库连接字符串'
db = SQLAlchemy(app)

# 定义父级模型 A
class A(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    bs = db.relationship('B', backref='a', cascade='all, delete-orphan', lazy='dynamic')

# 定义子级模型 B
class B(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    a_id = db.Column(db.Integer, db.ForeignKey('a.id'))

# 创建 A 和 B 的事务
def create_a_and_b(a_name, b_name):
    # 开始事务
    db.session.begin()

    try:
        # 创建父级模型 A
        a = A(name=a_name)
        db.session.add(a)
        db.session.flush()  # 刷新会话以获取自动生成的 a.id, ⚠️注意这一行。非常重要

        # 创建子级模型 B
        b = B(name=b_name, a_id=a.id)
        db.session.add(b)

        # 提交事务
        db.session.commit()
        print("事务已提交")

    except Exception as e:
        # 出现异常,回滚事务
        db.session.rollback()
        print("事务已回滚")
        print("错误信息:", str(e))

    finally:
        # 关闭会话
        db.session.close()

# 调用函数创建 A 和 B 的事务
create_a_and_b("A模型名称", "B模型名称")

标签:sqlalchemy,name,父级,Column,模型,db,session,id
From: https://www.cnblogs.com/dengz/p/18163270

相关文章

  • 记一次5分钟大模型生成物流网关多域名配置工具
    工具解决的问题小哥工作台配置物流网关配置一个接口,需要三个服务域名(自营、3pl、港澳),三个环境(测试、UAT、正式),3*3相当于需要配置9次,其中除了别名,其他都配置基本相同。通过大模型生成一个工具录入一次接口,生成9个配置文件。 步骤一:定义接口配置标准格式   步骤二:生......
  • 大模型的涌现能力与预训练loss的关系比模型参数更紧密
    清华大学和智谱AI团队研究发现:大模型的涌现能力与预训练loss的关系比模型参数更紧密。https://arxiv.org/pdf/2403.15796这篇论文《从损失角度理解语言模型的涌现能力》通过将预训练损失作为评估指标,强调了在理解和评价语言模型的涌现能力时,损失的重要性可能超过了模型参数......
  • 多模态大模型
    想了很久,最后还是写了这篇。LLaVA贡献多模态指令数据。当下关键的挑战之一是缺乏视觉与语言组成的指令数据。本文提出了一个数据重组方式,使用ChatGPT/GPT-4将图像-文本对转换为适当的指令格式;大型多模态模型。研究者通过连接CLIP的开源视觉编码器和语言解码器LLaMA,开......
  • 大语言模型(LLM)的逻辑推理能力的例子 —— 以ChatGPT3.5为例
    例子:......
  • 简单理解盒子模型
    1.什么叫盒子模型在html中大部分元素,特别是块元素display:block;都可以被看做一个盒子。网页布局就是一个一个盒子的平铺,堆叠,嵌套摆放。这么多的盒子放在一起,最重要的就是去关注他们的各种尺寸,边界等等,主要怕意料外的重叠一类导致的显示不正常。2.W3C和IE盒子模型指的什么?W3......
  • EPAI手绘建模APP资源管理和模型编辑器1
    (10) 资源① 打开资源管理页面。图 15 资源列表-模型 图 16 资源列表-图层 图 17 资源列表-相机 图 18 资源列表-灯光② 资源管理页面包括模型列表、图层列表、相机列表、灯光列表;包括颜色选择页面、贴图选择页面、材质选择页面、样式选择页面。③ 模型......
  • EPAI手绘建模APP模型库
    (9) 库① 打开手绘建模模型集。 图 11 手绘建模模型集② 宫格显示所有创建和保存的模型,每个模型包括模型图片文件、模型文件名称、模型文件大小、修改日期。③ 在收藏的模型的图片左上角用☆标记。④ 点击搜索按钮,进入搜索;输入搜索关键字,显示所有符合条件的模型。......
  • 盒模型
    盒模型box:盒子,每个格元素在页面中都会生成一个矩形区域(盒子)行盒在页面中不换行,块盒独占一行盒子的组成部分内容content填充padding边框border外边距margin扩展box-size:盒子尺寸,宽高范围background-clip:背景覆盖范围word-break:断词规则,影响文字在什么位置被截......
  • 实验12-使用keras预训练模型完成猫狗识别
    版本python3.7tensorflow版本为tensorflow-gpu版本2.6运行结果:这里我用Gpu进行加速,训练一回9秒,如果不启用gpu,训练一回会很慢。  代码:#-*-codeing=utf-8-*-#@Time:2022/10/211:44#@Author:程浩#@File:猫狗识别.py#@Software:PyCharmimporttensorflow......
  • 笔记本1050ti跑autoformer模型,环境搭建过程
    ##1、选显卡对应得驱动程序https://www.nvidia.com/Download/index.aspxnotebook是笔记本,下载类型选sd。不更新驱动会报:RuntimeError:TheNVIDIAdriveronyoursystemistooold(foundversion8000).PleaseupdateyourGPUdriverbydownloadingandinstallinganew......