当前位置: 首页 > 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 的相关文档很少

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 家族企业如何找到合适的人才
  • 存在 ZooKeeper 未授权访问【原理扫描】--通过防火墙策略进行修复
  • Qt实现程序单实例运行(只能运行1个进程)及QSharedMemory用法
  • 【Vue】智慧商城
  • 使用Docker辅助图像识别程序开发:在Docker中显示GUI、访问GPU、USB相机以及网络
  • Robust Tiny Object Detection in Aerial Images amidst Label Noise
  • 第53集《摄大乘论》
  • 高中数学:数列-基础概念
  • 【清华大学】《自然语言处理》(刘知远)课程笔记 ——NLP Basics
  • 【计算机毕业设计】283基于微信小程序校园订餐
  • 20.水仙花指数
  • SpringBoot整合钉钉实现消息推送
  • 河海大学上岸经验分享!
  • 数据中心网络架构设计与优化
  • WPF 简单页面切换示例
  • 网络传输文件的问题
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • extract-text-webpack-plugin用法
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • Java教程_软件开发基础
  • magento2项目上线注意事项
  • Sass 快速入门教程
  • springboot_database项目介绍
  • SQLServer之创建显式事务
  • Vue2 SSR 的优化之旅
  • 如何实现 font-size 的响应式
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 思否第一天
  • 用jQuery怎么做到前后端分离
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • puppet连载22:define用法
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #laravel 通过手动安装依赖PHPExcel#
  • #systemverilog# 之 event region 和 timeslot 仿真调度(十)高层次视角看仿真调度事件的发生
  • $refs 、$nextTic、动态组件、name的使用
  • (~_~)
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • (轉)JSON.stringify 语法实例讲解
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET 漏洞分析 | 某ERP系统存在SQL注入
  • .NET/C#⾯试题汇总系列:⾯向对象
  • .NET企业级应用架构设计系列之结尾篇
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • ??Nginx实现会话保持_Nginx会话保持与Redis的结合_Nginx实现四层负载均衡
  • @DependsOn:解析 Spring 中的依赖关系之艺术