当前位置: 首页 > news >正文

【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 的相关文档很少

相关文章:

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

使用 SQLObject orm 库快速将接口数据存入数据库 文章目录 使用 SQLObject orm 库快速将接口数据存入数据库背景orm python 版本都有哪些? SQLObject 简单的使用 背景 因为测试需要,要将百万条数据接口查询数据存入数据库中,为了减少 mysql …...

@EnableResourceServer资源服务注解源码分析

文章目录 学习参考EnableResourceServer概要ResourceServerConfiguration属性定义configure(HttpSecurity)ResourceServerSecurityConfigurerinit(HttpSecurit)configure(HttpSecurity) 学习参考 Spring Security框架配置运行流程完整分析 - 【必看】 Security OAuth2 授权 &…...

SpringBoot实现图片文件上传和回显的两种方式

目录 一 功能需求 二 上传本地 2.1 实现文件上传的controller层 2.2 图片访问资源映射 二 上传OSS 一 功能需求 实现图片的上传和回显功能其实在业务中是非常常见的,比如需要上传头像,或者交易平台需要上传物品的图片等等,都需要上传和回…...

进程和计划任务以及步骤

进程 进程和程序有关,把该文件放到内存里,进程是动态的,不同时刻的状态不一样 内存:放置正在运行的程序和所需数据的位置 程序启动 ——》将相关文件和数据放到内存里 ——》进程(processes) 进程相关命令 …...

使用Python实现深度学习模型:序列到序列模型(Seq2Seq)

序列到序列(Seq2Seq)模型是一种深度学习模型,广泛应用于机器翻译、文本生成和对话系统等自然语言处理任务。它的核心思想是将一个序列(如一句话)映射到另一个序列。本文将详细介绍 Seq2Seq 模型的原理,并使…...

力扣283. 移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出:[1,3,12,0,0] 示例 2: 输入: nums [0] …...

二叉树的顺序结构(堆的实现)

前言 普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结 构存储。 现实中我们通常把堆 ( 一种二叉树 ) 使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统 虚拟进程地址空间中的堆是两回事&…...

2024大模型如何学习【附学习资料】

摘要: 通过深入了解本文中的这些细节,并在实际项目中应用相关知识,将能够更好地理解和利用大模型的潜力,不仅在学术研究中,也在工程实践中。通过不断探索新方法、参与项目和保持热情,并将其应用于各种领域&…...

计算机组成原理·考点知识点整理

根据往年考试题,对考点和知识点的一个整理。 校验编码 码距 一种编码的最小码距,其实就是指这种编码的码距。码距有两种定义: 码距所描述的对象含义 2 2 2 个特定的码其二进制表示中不同位的个数一种编码这种编码中任意 2 2 2 个合法编码的…...

python-datetime模块时间戳常用方法汇总

文章目录 datetime模块常用方法1、导入模块2、获取当前日期和时间3、获取当前日期4、创建特定日期或时间5、日期和时间的运算6、使用timedelta运算日期时间创建 timedelta 对象timedelta 的加减运算timedelta 的属性timedelta 的比较示例代码格式化日期和时间获取日期和时间的各…...

【Python报错】已解决ModuleNotFoundError: No module named ‘timm’

成功解决“ModuleNotFoundError: No module named ‘timm’”错误的全面指南 一、引言 在Python编程中,经常会遇到各种导入模块的错误,其中“ModuleNotFoundError: No module named ‘timm’”就是一个典型的例子。这个错误意味着你的Python环境中没有安…...

【设计模式】适配器模式(结构型)⭐⭐⭐

文章目录 1.概念1.1 什么是适配器模式1.2 优点与缺点 2.实现方式2.1 类适配器模式2.2 对象适配器模式 3 Java 哪些地方用到了适配器模式4 Spring 哪些地方用到了适配器模式 1.概念 1.1 什么是适配器模式 简单来说,适配器模式就是作为两个不兼容接口之间的桥梁。 1.…...

云原生周刊:Gateway API v1.1 发布 | 2024.6.3

开源项目推荐 Grafana Tanka Tanka 是 Grafana 开发的一款用于 Kubernetes 的灵活、可重用和简洁的配置工具,是使用 YAML 进行 Kubernetes 配置的一种替代方案。 pv-migrate pv-migrate 是一个 CLI 工具/kubectl 插件,可以轻松地将一个 Kubernetes PersistentVo…...

KotlinConf 2024:深入了解Kotlin Multiplatform (KMP)

KotlinConf 2024:深入了解Kotlin Multiplatform (KMP) 在近期的Google I/O大会上,我们推荐了Kotlin Multiplatform (KMP)用于跨移动、网页、服务器和桌面平台共享业务逻辑,并在Google Workspace中采用了KMP。紧接着,KotlinConf 2…...

探索ChatGPT-4在解决化学知识问题上的研究与应用

1. 概述 近年来,人工智能的发展主要集中在 GPT-4 等大型语言模型上。2023 年 3 月发布的这一先进模型展示了利用广泛知识应对从化学研究到日常问题解决等复杂挑战的能力。也开始进行研究,对化学的各个领域,从化学键到有机化学和物理化学&…...

性能狂飙:SpringBoot应用优化实战手册

在数字时代,速度就是生命,性能就是王道!《极速启航:SpringBoot性能优化的秘籍》带你深入SpringBoot的内核,探索如何打造一个飞速响应、高效稳定的应用。从基础的代码优化到高级的数据库连接池配置,再到前端…...

Github上一款开源、简洁、强大的任务管理工具:Condution

Condution 是一款开源任务管理工具,它以简洁易用、功能强大著称。它旨在为用户提供一个简单高效的平台,帮助他们管理日常任务、提高工作效率。 1. Condution 的诞生背景 现如今,市面上存在着许多任务管理软件,但它们往往价格昂贵…...

LeetCode-2938. 区分黑球与白球【贪心 双指针 字符串】

LeetCode-2938. 区分黑球与白球【贪心 双指针 字符串】 题目描述:解题思路一:贪心解题思路二:一次遍历统计1的个数,找0后累加左边的1的个数解题思路三: 题目描述: 桌子上有 n 个球,每个球的颜色…...

深度神经网络——什么是扩散模型?

1. 概述 在人工智能的浩瀚领域中,扩散模型正成为技术创新的先锋,它们彻底改变了我们处理复杂问题的方式,特别是在生成式人工智能方面。这些模型基于高斯过程、方差分析、微分方程和序列生成等坚实的数学理论构建。 业界巨头如Nvidia、Google…...

有代码冗余的检查工具嘛

是的,有一些代码质量工具可以帮助检查冗余代码。这些工具可以分析代码库,并识别出重复、冗余或不必要的代码片段。一些流行的代码质量工具包括: PMD: PMD 是一个开源的静态代码分析工具,支持多种编程语言,包括 Java、…...

BetterGI:原神智能辅助系统 重新定义游戏体验

BetterGI:原神智能辅助系统 重新定义游戏体验 【免费下载链接】better-genshin-impact 📦BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音游 - UI Automa…...

DXVK:彻底解决Linux游戏兼容性难题的Vulkan翻译层

DXVK:彻底解决Linux游戏兼容性难题的Vulkan翻译层 【免费下载链接】dxvk Vulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine 项目地址: https://gitcode.com/gh_mirrors/dx/dxvk 你是否曾经因为心爱的Windows游戏无法在Linux上运行而感到…...

告别重复输入:快马助你打造高效openclaw命令管理工具

最近在团队协作中频繁使用openclaw工具时,发现每次手动输入冗长的命令参数特别容易出错,尤其是当需要切换不同环境配置时,常常因为输错一个参数导致整个流程卡住。于是决定用Python开发一个小工具来提升操作效率,顺便把实现过程记…...

基于TMS320F28033的20MHz手持式双踪袖珍示波器设计与实现

一、系统概述 设计实现了一款手持式、双通道、20MHz带宽的数字存储示波器,以TI TMS320F28033 DSP为核心控制器,结合FPGA与高速ADC,构建了集信号调理、高速采集、数据处理与显示于一体的便携式测量仪器。系统采用程控增益放大、DC/AC耦合电子切…...

Visual C++运行库全解析:从问题诊断到高效部署的完整指南

Visual C运行库全解析:从问题诊断到高效部署的完整指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 问题诊断:运行库故障的典型表现与…...

告别繁琐文字提取:Text-Grab本地化OCR工具效率提升指南

告别繁琐文字提取:Text-Grab本地化OCR工具效率提升指南 【免费下载链接】Text-Grab Use OCR in Windows quickly and easily with Text Grab. With optional background process and notifications. 项目地址: https://gitcode.com/gh_mirrors/te/Text-Grab …...

思源宋体专业应用全攻略:从零开始掌握开源中文字体开发

思源宋体专业应用全攻略:从零开始掌握开源中文字体开发 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为商业项目寻找高质量中文字体而烦恼?思源宋体作为A…...

(新)IEEE Access论文投稿全流程实战解析

1. IEEE Access投稿前的准备工作 第一次投稿到IEEE Access这种国际期刊,很多人都会感到无从下手。作为一个审过稿也投过稿的老手,我完全理解这种忐忑。别担心,跟着我的步骤走,保证你能顺利完成整个投稿流程。 首先得明确一点&…...

从毫安预警到安培计量:芯森电子FR系列传感器在储能安全与管理中的协同应用

摘要在储能系统(ESS)的安全架构中,电流传感器不仅是计量工具,更是系统的“免疫细胞”。随着储能系统向高压化、数字化演进,单一的电流检测方案已无法满足从“微小漏电预警”到“电池主回路控制”的全栈需求。本文基于芯…...

自动控制原理实验四:基于MATLAB/Simulink的系统频率特性分析与可视化

1. 实验背景与核心概念 频率特性分析是自动控制领域最实用的工具之一,它就像给系统做"心电图"——通过不同频率的输入信号,观察系统的"心跳反应"。我在工业现场调试时,经常用这种方法快速判断系统稳定性。这次我们要用M…...