首页 > 数据库 >sqlalchemy中relationship使用

sqlalchemy中relationship使用

时间:2024-07-18 11:20:36浏览次数:9  
标签:sqlalchemy relationship column Mapped 使用 mapped table

sqlalchemy是python做orm管理的非常重要的工具,sqlalchemy2.0版本relationship与上个版本有所不同,具体如下:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.orm import declarative_base



SQLALCHEMY_DATABASE_URL='你的数据库配置信息'
engine=create_engine(SQLALCHEMY_DATABASE_URL
                     ,pool_pre_ping=True
                     )
SessionLocal=sessionmaker(
                    autoflush=False,
                    bind=engine)
Base=declarative_base()


from typing import Optional,List
from sqlalchemy import ForeignKey,SmallInteger,BigInteger,String,Text
from sqlalchemy.orm import relationship,Mapped,mapped_column


class TestTableInfo(Base):
    __tablename__='test_table_info'

    id:Mapped[int]=mapped_column(BigInteger,autoincrement=True,primary_key=True)
    num:Mapped[Optional[int]]=mapped_column(SmallInteger,default=None,comment='数字')
    schema_table:Mapped[str]=mapped_column(String(100),default=None,comment='表名')

    table_log_list:Mapped[List['TestTableLog']]=relationship(back_populates='test_table_info')



class TestTableLog(Base):
    __tablename__='test_table_log'

    id:Mapped[int]=mapped_column(BigInteger,autoincrement=True,primary_key=True)
    table_id:Mapped[int]=mapped_column(BigInteger,ForeignKey('test_table_info.id'),key=True,comment='表id')
    result:Mapped[Optional[str]]=mapped_column(Text,default=None,comment='结果')

    test_table_info:Mapped['TestTableInfo']=relationship(back_populates='table_log_list')
TestTableInfo类和TestTableLog是一对多的关系,其中TestTableLog类中的table_id是外键,关联test_table_info表中的id。
两个类中的relationship必须是一一对应的,table_log_list必须是TestTableLog中relationship的back_populates。同理,test_table_info也一样。

标签:sqlalchemy,relationship,column,Mapped,使用,mapped,table
From: https://www.cnblogs.com/DidierFeng/p/18309126

相关文章

  • 深入探讨:使用 Spring AOP 实现 Lock4j 的声明式和编程式分布式锁
    深入探讨:使用SpringAOP实现Lock4j的声明式和编程式分布式锁在现代分布式系统中,分布式锁是一个非常重要的概念。它可以帮助我们在多个节点之间协调资源访问,防止数据不一致和竞争条件。今天,我们将深入探讨如何使用Lock4j和SpringAOP来实现声明式和编程式的分布式锁。什......
  • 使用Spring Boot AOP和自定义注解优雅实现操作日志记录
    使用SpringBootAOP和自定义注解优雅实现操作日志记录大家好,今天我们来聊聊如何在SpringBoot项目中,通过AOP(面向切面编程)和自定义注解,优雅地实现操作日志记录。操作日志对于系统的可维护性和安全性至关重要,它能帮助我们追踪用户行为,排查问题。什么是AOP?AOP,全称Aspect-Oriented......
  • 使用Spring Boot实现图形验证码:从零开始的详细教程
    使用SpringBoot实现图形验证码:从零开始的详细教程在现代Web应用中,图形验证码是一种常见的防止机器人和恶意攻击的手段。今天,我们将深入探讨如何在SpringBoot项目中实现图形验证码。通过这个教程,你将学会如何生成和验证图形验证码,并将其集成到你的SpringBoot应用中。一、项目......
  • Java使用流实现浏览器自动下载文件(附前端请求代码)
    一、注意事项1.需要注意后端的响应头设置,告诉浏览器下载文件类型(Content-Type)以及文件名称。2.不同环境下中文路径以及文件名会出现乱码情况路径解决:filePath=newString((filePath).getBytes("ISO8859-1"),"UTF-8");文件名解决:response.setHeader("Content-Dispositi......
  • 【Web服务与Web应用开发】【C#】VS2019 创建ASP.NET Web应用程序,以使用WCF服务
    目录0.简介1.环境2.知识点3.详细过程1)创建空项目2)添加Web表单3)使用Web表单的GUI设计4)添加服务引用5)在Web的button函数中调用服务,获取PI值6)测试0.简介本文属于一个系列中的第二篇文章,这个系列会实现一个项目,这个项目主要使用VisualStudio2019作为开发工具,创建WC......
  • java 使用mybatis时 模糊查询
    有两种方法,分别是直接字符串拼接,使用mybatis的bind函数绑定再查方法1<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"&g......
  • 【Python】pyppeteer 简单使用2
    importsyssys.path.append("/home/user/.local/lib/python3.9/site-packages")#将包的路径添加到环境变量importasynciofrompyppeteerimportlaunchfrompyppeteer.errorsimportTimeoutErrorfrompyppeteer_stealthimportstealth#反检测模块,隐藏浏览器特征widt......
  • async sqlalchemy 异步查询
      实体和属性返回多条数据 fetchall()q=select(models.User)result=awaitsession.execute(q)foriinresult:print(i)fetchone()返回一条数据q=select(models.User)result=awaitsession.execute(q)print(result.fetchone())>>>(<model.models.U......
  • java8四个函数式接口:Function, Predicate, Consumer, Supplier使用
    目录1、前言2. 四大函数式接口1.Function,>2.Predicate 3.Consumer4.Supplier1、前言Java8引入了一种新的接口特性,叫做函数式接口。这种接口只能有一个抽象方法,通常用注解@FunctionalInterface标识。函数式接口可以被隐式地转换为lambda表达式。以下是一个......
  • Linux使用Ambari启动服务启动失败
    试了好几次,基本上所有服务都是启动失败,试过重启,网上也没有相关问题。这些全是红色,启动失败 打开日志后发现了很多问题:2024-07-1809:50:26,791-Retryingafter10seconds.Reason:Executionof'/usr/hdp/current/hadoop-hdfs-namenode/bin/hdfsdfsadmin-fshdfs://m......