【Python】使用 SQLObject orm 库快速将接口数据存入数据库

使用 SQLObject orm 库快速将接口数据存入数据库

文章目录

  • 使用 SQLObject orm 库快速将接口数据存入数据库
    • 背景
      • orm python 版本都有哪些?
    • SQLObject 简单的使用

背景

因为测试需要,要将百万条数据接口查询数据存入数据库中,为了减少 mysql server 侧的操作,是用来 docker 部署了一个服务,如果想将接口 json 数据快速存入数据库中,使用 orm 非常有必要;

orm python 版本都有哪些?

  1. SQLAlchemy

    • 功能强大且灵活。
    • 支持多种数据库后端,如 SQLite, MySQL, PostgreSQL, Oracle, SQL Server 等。
    • 提供了完整的 SQL 抽象层,允许你使用 Python 表达式来编写 SQL 查询。
    • 支持 ORM, Core Expression Language, SQL Expression Language 和 Alembic(迁移工具)。
    • 广泛用于各种大型项目中。
  2. Django ORM

    • Django 框架自带的 ORM。
    • 对于 Django 项目来说,它非常集成且易于使用。
    • 提供了丰富的查询 API 和关系管理功能。
    • 抽象了 SQL 的复杂性,使得数据库操作变得简单直观。
    • 不像 SQLAlchemy 那么灵活,但足够满足大多数 Django 项目的需求。
  3. Peewee

    • 小型、轻量级的 ORM。
    • 支持多种数据库后端。
    • 提供了简洁明了的 API。
    • 非常适合小型到中型项目。
  4. PonyORM

    • 提供了强大的查询 API,支持链式调用和 Pythonic 语法。
    • 支持数据库迁移。
    • 提供了 ORM、LINQ 和 SQL 之间的混合编程。
    • 专注于易用性和性能。
  5. SQLObject

    • 另一个轻量级的 ORM。
    • 提供了简单的 API 来定义数据库模型和执行查询。
    • 适用于小型到中型项目。
  6. Storm

    • 基于 Twisted 的 ORM。
    • 提供了异步数据库访问。
    • 适用于需要高性能异步 I/O 的项目。
  7. Elixir

    • 基于 SQLAlchemy 的轻量级 ORM,旨在提供更简洁的 API。
    • 适用于那些喜欢 SQLAlchemy 但希望 API 更简洁的开发者。

从对比来看越简单越好,就选择了 sqlobject

SQLObject 简单的使用

以下是如何使用 SQLObject 的基本步骤:

  1. 安装 SQLObject

首先,你需要安装 SQLObject。你可以使用 pip,如果使用 pymysql 驱动,还需要安装下

pip install SQLObject
  1. 定义模型

接下来,你需要定义你的数据库模型。这些模型将映射到数据库中的表。

from sqlobject import SQLObject, StringCol, IntColclass Person(SQLObject):name = StringCol(length=50)age = IntCol()# 这里可以定义其他方法和属性# 连接到数据库(在这里是 SQLite,但 SQLObject 也支持其他数据库)
Person.setConnection('sqlite:/:memory:')# 创建表(如果尚不存在)
Person.createTable(ifNotExists=True)
  1. 插入数据

你可以使用 Python 对象来插入数据。

john = Person(name='John Doe', age=30)
john.set(name='John Smith', age=31)  # 另一种设置属性的方法
john.save()  # 将对象保存到数据库
  1. 查询数据

你可以使用 SQLObject 的查询 API 来查询数据。

# 查询所有 Person 对象
people = Person.select()
for person in people:print(person.name, person.age)# 使用条件查询
thirty_year_olds = Person.selectBy(age=30)
for person in thirty_year_olds:print(person.name)
  1. 更新和删除数据

你可以使用 Python 对象的方法来更新和删除数据。

# 更新数据
john = Person.byName('John Smith')
john.set(age=32)
john.save()# 删除数据
john.destroySelf()
  1. 注意
  • 在生产环境中,你可能希望使用更持久的数据库连接,而不是内存中的 SQLite 数据库。
  • 你还可以定义关系(如一对多、多对多等),并在查询中使用它们。
  • SQLObject 提供了丰富的 API 来处理更复杂的查询和数据库操作。
  • 你可以查看 SQLObject 的官方文档以获取更多详细信息和示例:https://sqlobject.org/sqlobject/
  • 官方文档包括教程、API 参考、常见问题解答等。

有一点比较恶心的是 SQLObject 的相关文档很少

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/23331.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Doris insert into 插入语句执行成功,且select查询成功,返回结果不报错,但查不到该插入数据

问题:Doris insert into 正常执行成功,select 查询也执行成功,但查不到该写入数据 原因:由于有其他 insert commit 事务待提交且该任务处于锁的状态,导致不断在回滚,进而造成其他的insert into 语句也执行成…

26 - 超过5名学生的课(高频 SQL 50 题基础版)

26 - 超过5名学生的课 select class fromCourses group byclass havingcount(*)>5;

Seed-TTS语音编辑有多强?对比实测结果让你惊叹!

GLM-4-9B 开源系列模型 前言 就在最近,ByteDance的研究人员最近推出了一系列名为Seed-TTS的大规模自回归文本转语音(TTS)模型,能够合成几乎与人类语音无法区分的高质量语音。那么Seed-TTS的表现究竟有多强呢?让我们一起来感受下Seed-TTS带来的惊喜吧! 介绍Seed-TTS…

Java并发包中的锁升级

在Java中,特别是ReentrantLock和synchronized关键字的实现中,锁的升级通常涉及到从无锁状态到偏向锁、再升级到轻量级锁,最后可能升级到重量级锁的过程。这一系列过程是为了减少锁带来的开销,提高并发效率。 偏向锁(Bi…

如何用手写代码实现JavaScript中的reduce函数?

在JavaScript中,Array.prototype.reduce() 是一个内置方法,它遍历数组中的每个元素,并将它们累积成一个单一的返回值。我们可以自己编写一个类似的函数来模拟这个过程。 下面是一个简单的手写实现例子: function myReduce(arr, …

组装服务器重装linux系统【idrac集成戴尔远程控制卡】

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专…

Vue 跨平台性能优化十法

Vue.js 开发能够同时运行在不同平台(如 Web、移动平台和桌面平台)的应用程序。以下是一些常见的跨平台解决方案: 1. 使用 Vue.js 官方发布的框架: Vue.js:主要用于 Web 开发。 Vue Native:使用 Vue 语法开…

数据结构 | 超详细讲解七大排序(C语言实现,含动图,多方法!)

目录 ​编辑 排序的概念 常见排序算法 ​编辑 1.冒泡排序 🍹图解 🥳代码实现 🤔时间复杂度 2.插入排序 🍹图解 🌴深度剖析 🍎代码思路 🥳代码实现 🤔时间复杂度 3.希尔…

2024 年适用于 Linux 的 5 个微软 Word 替代品

对于那些最近由于隐私问题或其他原因而转向 Linux 的用户来说,可能很难替换他们最喜欢的、不在 Linux 操作系统上运行的应用程序。 寻找流行程序的合适替代品可能会成为一项挑战,而且并不是每个人都准备好花费大量时间来尝试弄清楚什么可以与他们在 Win…

读书笔记|《把自己变成稀缺资产》:我们都拥有100分的欲望,却只有1分的耐心。

哈喽,你好啊,我是雷工! 最近在读一本书《把自己变成稀缺资产》,其中一章讲到耐心的重要性,很有共鸣。 当今社会,生活节奏越来越快,我们都在急于求成的追求结果,对过程越来越缺乏耐…

C++核心编程友元的应用

文章目录 1.友元1.什么是友元2.全局函数做友元2.类做友元3.成员函数做友元 1.友元 1.什么是友元 在C中,友元(friend)是一种允许一个类或函数访问另一个类的非公有(private 或 protected)成员的机制。这种机制打破了类…

系统研发安全漏洞

软件安全漏洞指的是软件中存在的具体缺陷或疏忽,这些缺陷或疏忽能够被攻击者利用并执行一些恶意行为。这些行为包括但不限于泄露或修改敏感信息、干扰或销毁系统、接管计算机系统或程序权限等。与大众熟悉的软件缺陷(Bug)相比,安全…

Mysql中表的常用约束

在MySQL表中常用的约束有以下几种: 1. 主键约束(Primary Key Constraint):用于标识表中的唯一记录。一个表只能有一个主键,主键列不能有重复值,也不能为NULL。 2. 唯一约束(Unique Constraint…

2024050402-重学 Java 设计模式《实战责任链模式》

重学 Java 设计模式:实战责任链模式「模拟618电商大促期间,项目上线流程多级负责人审批场景」 一、前言 场地和场景的重要性 射击🏹需要去靶场学习、滑雪🏂需要去雪场体验、开车🚗需要能上路实践,而编程…

Scanpy(4)用与数据整合和批次处理

Scanpy包,用与数据整合和批次处理,包含批次效应的BBKNN算法和用于对比的ingest基础算法比较,及其原理简介。 1. 依赖: (1)数据集(全部需要挂VPN): PBMC:pbmc3k_processed()(需要下载);pbmc68k_reduced()(scanpy自带)Pancreas(需要下载)(2)Python包:Scanp…

【Python】把xmind转换为指定格式txt文本

人工智能训练通常需要使用文本格式,xmind作为一种常规格式不好进行解析,那如何把xmind转换为txt格式呢? 软件信息 python python -v Python 3.9.13 (tags/v3.9.13:6de2ca5, May 17 2022, 16:36:42) [MSC v.1929 64 bit (AMD64)] on win32…

Python 包安装及常用命令【python 入门】

背景: 近期看到一个项目,做微信只能机器人,服务是使用python搭建的,于是拷贝下来自己打算跑一跑,部署一下,可是自己又没有python的经验,于是各种查资料学习,跟着敲一敲,顺…

Go 1.19.4 切片与子切片-Day 05

1. 切片 1.1 介绍 切片在Go中是一个引用类型,它包含三个组成部分:指向底层数组的指针(pointer)、切片的长度(length)以及切片的容量(capacity),这些信息共同构成了切片的…

单片机排水泵高压方案

灵动微多颗算力高、高可靠性的通用系列和电机专用系列MCU,配合成熟的控制算法,覆盖了包括洗衣机在内的各种大小家电市场。 RAMSUN提供的MM32 MCU种类较多,例如洗衣机内部的排水泵系统,排水泵控制首选电控高性价比产品MM32SPIN023…

JavaWeb_SpringBootWeb案例

环境搭建: 开发规范 接口风格-Restful: 统一响应结果-Result: 开发流程: 第一步应该根据需求定义表结构和定义接口文档 注意: 本文代码从上往下一直添加功能,后面的模块下的代码包括前面的模块&#xff0c…