首页 > 数据库 >python sqlalchemy 动态设置表名__tablename__,一个model对应多个table

python sqlalchemy 动态设置表名__tablename__,一个model对应多个table

时间:2023-10-30 20:34:04浏览次数:47  
标签:__ sqlalchemy python tablename Column table model

from sqlalchemy import create_engine,Column,BigInteger,String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
base = declarative_base()
engine = create_engine("postgresql://postgresadmin:admin123@192.168.214.133:32222/postgresdb")
class Test(base):
    __abstract__ = True #
    id = Column(BigInteger,primary_key=True)
    name = Column(String(255))
    tablename = Column(String(255))
    
    def __repr__(self) -> str:
        return self.tablename
    
session = sessionmaker(bind=engine)
Session = session()



# build a model class with a specific table name
def get_model(tablename,schema):
    Model = type(tablename, (Test,), {
        '__tablename__': tablename,
        '__table_args__':{"schema":schema}
    })
    return Model

model = get_model('test1','test')

value = Session.query(model).all()

for item in value:
    print(item)

  • 在抽象模型类中定义表列
  • 基于抽象模型构建一个模型类,并给它指定一个表名
  • 像使用常规类一样使用构建的模型类。

标签:__,sqlalchemy,python,tablename,Column,table,model
From: https://www.cnblogs.com/guowenrui/p/17798715.html

相关文章

  • 监控易101:全方位解读运维的核心功能与特性
      在数字化时代,企业IT环境的复杂性日益增加,给运维工作带来了前所未有的挑战。面对这一情况,监控易作为一款一体化运维监控管理平台,凭借其全面的监控覆盖、智能的告警机制、强大的数据分析工具以及灵活的扩展能力,赢得了众多企业的青睐。接下来,我们将深入探讨监控易的各大核心功能......
  • 记一次自增主键id换为随机id
    原始表自增主键为Long类型为了不影响原有逻辑使用触发器新建mysql触发器DROPTRIGGERIFEXISTS`insert_trigger`;DELIMITER//CREATETRIGGERinsert_triggerBEFOREINSERTONuserFOREACHROWBEGINDECLAREnew_idINT;DECLAREtemp_idINT;SETnew_id=FLOOR(RA......
  • 监控易一体化运维:打造机房环境监控的卓越典范
      随着信息技术的飞速发展,机房作为企业数据和业务的中心,其运行状态和管理的重要性日益凸显。为确保机房的稳定性和可靠性,越来越多的企业选择使用一体化运维管理软件来进行实时监控。在这方面,监控易品牌提供了一款全面而高效的机房环境实时监控系统方案。一、机房环境实时监控的......
  • E. Tracking Segments
    E.TrackingSegments题目大意:给一个全为零的数组,m次询问区间,q次修改,定义一个区间中的1个数严格大于0个数为漂亮,问在第几次修改后出现了第一个完美区间。思路:对修改次数进行二分,利用前缀和判断区间中的1个数,时间复杂度为$mlog(q)$codeintn,m;intb[N];vector<pii>a;bo......
  • 2023年10月自考总结
    学习效率最高的时刻就是在上课之前和考试之后,在上课之前先把上课老师要讲解的知识预习一遍,在上课的时候就可以刻意听一下,自己在预习过程中不理解不明白的知识,和老师进行交流和沟通,这样对知识才会印象深刻。还是就是在考试之后,通过考试来检测自己还有那些地方有待提高,还有哪些知识在......
  • 钡铼技术ARM工控机在物联网领域的应用
    ARM工控机是一种基于ARM架构的工业控制计算机,用于在工业自动化领域中进行数据采集、监控、控制和通信等应用。ARM(AdvancedRISCMachine)架构是一种低功耗、高性能的处理器架构,广泛应用于移动设备、嵌入式系统和物联网等领域。ARM工控机通常具有以下特点:低功耗和高效性能:ARM处理......
  • 无涯教程-C语言 - 结构(Struct)
    数组允许定义变量的类型,这些变量可以容纳相同种类的多个数据项。同样,结构是C中可用的另一种用户定义的数据类型,它允许组合不同种类的数据项。结构Struct用于表示记录,假设您想定义图书馆中的书籍,您可能需要定义跟踪有关每本书的以下属性-标题title作者author主题subject图......
  • 【Azure Function App】如何修改Azure函数应用的默认页面呢?
    问题描述当在Azure中创建了一个函数应用(FunctionApp)后,访问默认URL会得到一个默认的页面。是否有办法修改这个默认页面呢?  问题解答在之前的博文中,介绍了修改AppService的默认页面。1:【Azure应用服务】AppService默认页面暴露Tomcat版本信息,存在安全风险 :https://www.cnbl......
  • C语言的system("pause")是什么
    ......
  • WebStorm下载安装-WebStorm中文版下载 中文版介绍
    WebStorm中文版是一款专业的Web前端编程开发软件。WebStorm最新版拥有JavaScript和JavaScript编译语言,支持智能代码提示和代码结构化,为用户提供了高级编码帮助。WebStorm2021软件拥有更精致的外观,还优化了Vue.js的体验,有效的提高了开发人员的工作效率。软件地址:看置顶贴68.烟柳画桥......