首页 > 数据库 >sqlalchemy根据字典kv自定义表结构

sqlalchemy根据字典kv自定义表结构

时间:2024-06-21 15:53:34浏览次数:12  
标签:sqlalchemy 自定义 column kv key mapped attributes model class

根据数据的内容自动创建数据库表结构


from sqlalchemy import create_engine, Column, Integer, String, Float, Boolean
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, Mapped, mapped_column

Base = declarative_base()

def create_model_from_dict(model_name, data_dict):

    class_attributes = {"__tablename__": model_name.lower()}
    class_attributes['id'] = mapped_column(Integer, primary_key=True)

    for key, value in data_dict.items():
        if isinstance(value, int):
            class_attributes[key] = mapped_column(Integer)
        elif isinstance(value, str):
            class_attributes[key] = mapped_column(String)
        elif isinstance(value, float):
            class_attributes[key] = mapped_column(Float)
        elif isinstance(value, bool):
            class_attributes[key] = mapped_column(Boolean)
        else:
            raise ValueError(f"Unsupported type for column {key}")

    model_class = type(model_name, (Base,), class_attributes)
    return model_class

# 示例字典
data = {

    'name': 'Alice',
    'age': 30,
    'height': 1.65,
    'is_active': True
}

# 创建模型
User = create_model_from_dict('User', data)

# 创建数据库引擎
engine = create_engine('sqlite:///example.db', echo=True)

# 创建表
Base.metadata.create_all(engine)

# 创建会话
Session = sessionmaker(bind=engine)
session = Session()

# 创建一个新的 User 对象
new_user = User(**data)

# 将新用户添加到会话中
session.add(new_user)

# 提交会话以保存更改
session.commit()

print("User added successfully.")

标签:sqlalchemy,自定义,column,kv,key,mapped,attributes,model,class
From: https://www.cnblogs.com/meizhengchao/p/18260680

相关文章

  • KVM虚拟机安装部署全攻略 cockpit
    01原理KVM(Kernel-basedVirtualMachine)虚拟化技术是一种基于内核的虚拟化技术,KVM虚拟化技术的实现依赖于CPU的虚拟化扩展(如IntelVT和AMD-V)。当宿主机启动时,KVM会加载一个轻量级的内核模块kvm.ko,该模块负责与硬件进行交互,实现虚拟机的创建、管理和调度。 02组成●KVM内......
  • 自定义组件获取接口数据
    <template><divclass="ting-title"><spanclass="text">{{text}}</span></div></template><script>exportdefault{name:'TingTitle',data:()=>{......
  • 微信小程序学习(七):自定义组件和通信
    1、基本知识开发中常见的组件主要分为公共组件和页面组件两种,因此注册组件的方式也分为两种:全局注册:在app.json文件中配置usingComponents节点进行引用声明,注册后可在任意组件使用局部注册:在页面.json文件中配置usingComponents节点进行引用声明,只可在当前页面......
  • apisix~为自定义插件设计一个configmap脚本
    configMapKubernetes中的ConfigMap是一种用来存储配置数据的API资源,它允许您将配置信息以键值对的形式保存,并在容器中使用这些配置信息。ConfigMap提供了一种将配置数据与应用程序解耦的方式,使得应用程序可以动态地获取配置而无需重新构建镜像。以下是ConfigMap的一些特......
  • ef core自定义默认的迁移表的名称
    efcore自定义默认的迁移表的名称usingMicrosoft.EntityFrameworkCore;usingMicrosoft.EntityFrameworkCore.Design;namespaceLong.EntityFrameworkCore;classMyDesignTimeDbContextFactory:IDesignTimeDbContextFactory<ApplicationDbContext>{publicApplicat......
  • 自定义类型:结构体,枚举,联合
    目录一.结构体1.0 C语言中为什么要引入结构体?1.1 结构体的声明1.2特殊的声明1.3结构体变量的定义和初始化二.枚举1.0类型的定义 1.1我们可以使用#define定义常量,为什么非要使用枚举?三.联合(共用体)1.0联合类型的定义1.1 联合的声明一.结构体1.0 C......
  • 【C语言】自定义类型
    目录一、结构体:1、结构体的声明:2、结构体的自引用:3、结构体变量的定义和初始化:4、结构体内存对齐:5、结构体传参:6、位段:二、枚举类型:三、联合体:一、结构体:1、结构体的声明:首先要了解什么是结构:结构是一些值的集合,与数组不同的是结构的每一个成员变量可以使不同......
  • [机器视觉]halcon应用实例 用户自定义多ROI模板匹配
    本示在前面几个halconROI示例的基础上继续扩展,更靠进实标情况。为了使ROI匹配更灵活,就要求可以让用户或工程根据实际使用情况自己去画ROI,想画几个是几个。数量不能在代码里写死。这次升级的主要是增加了一个while循环根据用户的鼠标按键来进行判断是否继续画,还是退出画ROI。效......
  • kvm镜像迁移到openstack集群,发现镜像文件有损
     因为没有停机然后复制或者是创建出来的镜像文件,有可能系统盘直接损坏了,修复一下之后,重新用它来生成虚拟机,可以正常使用了 修复命令:xfs_repair /dev/vda2 #这个不行用下面的,如果磁盘繁忙,umount一下xfs_repair-L /dev/vda2  【1】定义虚拟机,发现磁盘文件损坏了......
  • 快速自定义表单开发受欢迎的几个优势
    为了满足业务需求,低代码技术平台带着更理想的优势特点,广泛用于各中大型企业中,是助力企业实现提质增效、提升开发效率的有力武器。那么,您知道快速自定义表单开发的优势体现在哪里吗?为了帮助大家了解这些详情,接下来将会为大家介绍低代码技术平台及快速自定义表单开发的优势,希望能给......