【Python】基于ORM的SqlAlchemy操纵数据库代码实现

news2024/12/24 15:51:48

说明

ORM,全称Object-Relational Mapping,即对象-关系映射,是一种程序设计技术,用于在面向对象编程语言和关系数据库之间建立对应关系。它的主要目的是让开发者能够使用面向对象的方式操作数据库,而不必过多地关注数据库底层的细节。

通过ORM,开发者可以将数据库中的表映射成面向对象的类,表中的行则映射成对象的实例。这样做的好处是,在编写应用程序时,开发者可以直接使用面向对象的语法来进行数据库操作,比如创建、更新、删除和查询数据,而无需编写复杂的SQL语句。ORM框架会负责将面向对象操作翻译成对应的数据库操作,从而简化了开发流程。

常见的ORM框架包括Hibernate(Java)、Entity Framework(.NET)、Django ORM(Python)、Sequelize(Node.js)等,它们提供了丰富的功能和工具,使得开发者能够更高效地与数据库进行交互,并且能够在一定程度上实现数据库的抽象,从而提高了应用程序的可维护性和可移植性。

接下来我们用SqlAlchemy实现对数据库的增删改查。

代码实现:

from sqlalchemy import create_engine
from sqlalchemy import Column,String,Integer
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
import pymysql

# 初始化数据库连接
engine=create_engine('mysql+pymysql://root:root@localhost:3306/flask_1?charset=utf8')
Base=declarative_base() # 生成SQLORM基类(创建对象的基类)

class User(Base):
    # 表名
    __tablename__='user'
    # 表结构
    id=Column(Integer,primary_key=True)
    user_id=Column(String(50),nullable=False)
    username=Column(String(50),nullable=False)
    head_img=Column(String(200))
    short_description=Column(String(300))

# 生成链接数据库的实例
session=sessionmaker(bind=engine)()

# #增操作,增加1条记录
# item=User(id=3,user_id='3',username='hacker',head_img='3.png',short_description='增加一个数据')
# session.add(item)
# session.commit()
# session.close()

# #查操作
# users=session.query(User).filter(User.id<4).all()
# for i in range(len(users)):
#     print(users[i].username)
# session.close()

# #改操作,将id为3的记录的username改为'Geek'
# session.query(User).filter(User.id==3).update({User.username:'Geek'})
# session.commit()
# session.close()

#删操作,将id为3的记录删除
session.query(User).filter(User.id==3).delete()
session.commit()
session.close()

效果展示:

代码执行前

 代码执行后

代码执行后

代码执行前

代码执行后

代码执行前

代码执行后

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

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

相关文章

法线贴图实现地形模型皱褶、凹凸不平的纹理效果

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 法线贴图在3D建模中扮演着重要的角色&#xff0c;它通过模拟表面的微…

Qt 国际化——创建中英文翻译步骤

Qt 国际化——创建中英文翻译步骤 说明&#xff1a;之前我的csdn博客&#xff0c;第一篇文章发表的就是Qt国际化的文章&#xff08;点击打开&#xff09;&#xff0c;写的也过于简单了&#xff1a; 今天&#xff0c;这篇文章再详细的记录下&#xff0c;中英文翻译的步骤。 一…

2024年区块链发展趋势

在快节奏的技术领域&#xff0c;区块链生态系统是创新的灯塔&#xff0c;不断发展和塑造数字景观。当我们迈入2024年时&#xff0c;必须通过了解关键的区块链发展趋势来保持领先地位&#xff0c;这些趋势将重新定义方式我们与去中心化系统交互。 1、互操作性&#xff1a;弥合区…

Day67力扣打卡

打卡记录 美丽塔 II&#xff08;前缀和 单调栈&#xff09; 链接 class Solution:def maximumSumOfHeights(self, maxHeights: List[int]) -> int:n len(maxHeights)stack collections.deque()pre, suf [0] * n, [0] * nfor i in range(n):while stack and maxHeights…

蔡司光学为山区孩子送光明,照亮未来之路

本月13日&#xff0c;蔡司光学携手德兴市科学技术协会、江西明眸贸易有限公司、德兴市妇幼保健院及德兴温视堂眼视中心&#xff0c;在江西上饶德兴市昄大学校内举办了“为边远山区孩子送光明”活动&#xff0c;在寒冷冬日为偏远山区的孩子送去冬日温暖&#xff0c;以公益之力照…

【中小型企业网络实战案例 一】规划、需求和基本配置

热门IT技术【视频教程】https://xmws-it.blog.csdn.net/article/details/134398330?spm1001.2014.3001.5502 案例拓扑图 案例需求 在中小园区中&#xff0c;S5735通常部署在网络的接入层&#xff0c;S8700通常部署在网络的核心&#xff0c;出口路由器一般选用AR系列路由器。 …

SQL进阶理论篇(十七):数据库主从同步的原理

文章目录 简介为什么需要主从同步主从同步的原理总结参考文献 简介 以MySQL数据库为例&#xff0c;在实际生产中&#xff0c;我们会如何对MySQL数据库进行性能优化呢&#xff1f; 比如说配合上Redis做缓存。Redis是一种高性能的内存数据库&#xff0c;而MySQL是一种基于磁盘文…

C# 使用MSTest进行单元测试

目录 写在前面 代码实现 执行结果 写在前面 MSTest是微软官方提供的.NET平台下的单元测试框架&#xff1b;可使用DataRow属性来指定数据&#xff0c;驱动测试用例所用到的值&#xff0c;连续对每个数据化进行运行测试&#xff0c;也可以使用DynamicData 属性来指定数据&…

计算机网络(4):网络层

网络层提供的两种服务 虚电路服务&#xff08;Virtual Circuit Service&#xff09;和数据报服务&#xff08;Datagram Service&#xff09;是在网络层&#xff08;第三层&#xff09;提供的两种不同的通信服务。它们主要区别在于建立连接的方式和数据传输的方式。 虚电路服务…

[图像和LiDAR点云的可微分配准]

文章目录 概要主要贡献内容概述实验小结 概要 不同模态之间的配准&#xff0c;例如来自摄像机的2D图像和LiDAR的3D点云之间的配准&#xff0c;是计算机视觉和机器人领域中至关重要的任务。 以往的方法通常通过匹配神经网络学习到的点和像素模式来估计2D-3D对应关系&#xff0…

听GPT 讲Rust源代码--src/tools(15)

File: rust/src/tools/rust-analyzer/crates/mbe/src/token_map.rs 在Rust源代码中&#xff0c;rust/src/tools/rust-analyzer/crates/mbe/src/token_map.rs文件的作用是实现了一个能够将输入的文本映射为标记的结构。具体来说&#xff0c;它定义和实现了几个结构体&#xff08…

PolarDB-X、OceanBase、CockroachDB、TiDB二级索引写入性能测评

为什么要做这个测试 二级索引是关系型数据库相较于NoSQL数据库的一个关键差异。二级索引必须是强一致的&#xff0c;因此索引的写入需要与主键的写入放在一个事务当中&#xff0c;事务的性能是二级索引性能的基础。 目前市面上的分布式数据库中&#xff0c;从使用体验的角度看…

178. 第K短路(A*启发式算法)

178. 第K短路 - AcWing题库 给定一张 N 个点&#xff08;编号 1,2…N&#xff09;&#xff0c;M 条边的有向图&#xff0c;求从起点 S 到终点 T 的第 K 短路的长度&#xff0c;路径允许重复经过点或边。 注意&#xff1a; 每条最短路中至少要包含一条边。 输入格式 第一行包…

Istio 社区周报(第一期):2023.12.11 - 12.17

欢迎来到 Istio 社区周报 Istio 社区朋友们&#xff0c;你们好&#xff01; 我很高兴呈现第一期 Istio 社区周报。作为 Istio 社区的一员&#xff0c;每周我将为您带来 Istio 的最新发展、有见地的社区讨论、专业提示和重要安全新闻内容。 祝你阅读愉快&#xff0c;并在下一期中…

❀My虚拟机上的ftp服务器搭建(centos)❀

❀My虚拟机上的ftp服务器搭建(centos)❀ 在CentOS上搭建FTP服务器可以使用vsftpd软件&#xff0c;下面是详细的搭建教程&#xff1a; ①安装vsftpd软件 在终端中输入以下命令进行安装&#xff1a; sudo yum install vsftpd ②配置vsftpd 打开vsftpd的配置文件&#xff0c;…

Java_集合进阶Set集合

少年没有乌托邦&#xff0c;心向远方自明朗 集合进阶&#xff08;Set、Map集合&#xff09; 一、Set系列集合 1.1 认识Set集合的特点 Set集合是属于Collection体系下的另一个分支&#xff0c;它的特点如下图所示 下面我们用代码简单演示一下&#xff0c;每一种Set集合的特…

城市里的“蛋壳运动空间”

近年来&#xff0c;秉承"发展群众体育&#xff0c;服务健康中国”的理念&#xff0c;全国各地持续推进全民健身与全民健康的融合发展。越来越多的口袋公园、户外运动设施出现在城市各个角落&#xff0c;一定程度上提升了全民运动的便利性和幸福感。 但是&#xff0c;遇到…

数说故事荣登胡润“全球猎豹企业榜”,彰显大数据与AI融合的创新力

昨日&#xff0c;2023 胡润全球猎豹企业大会暨《2023 胡润全球猎豹企业榜》发布活动在广州市南沙区金茂万豪酒店圆满举办。胡润研究院与广州南沙联合发布《2023胡润全球猎豹企业榜》&#xff0c;这是胡润研究院首次发布“全球猎豹企业榜”。榜单列出了全球成立于2000年之后&…

固态硬盘的基本知识

1.硬盘分为SSD&#xff08;solid state drive&#xff09;和 H&#xff08;hard desk drive&#xff09; 2.SSD数倍于HDD机械硬盘的传输性能&#xff0c;让普通用户和发烧玩家的体验均成倍提升。 三.SSD主要从如下3个方面来介绍&#xff08;3个方面匹配好才是速度的关键&…

C#线程的定义和使用方法

引言 在C#编程语言中&#xff0c;线程是一种并发执行的机制&#xff0c;允许程序同时执行多个任务。线程的使用使得我们能够利用计算机的多核处理器&#xff0c;实现程序的并行执行&#xff0c;提高系统的性能和响应能力。本文将详细介绍C#中线程的定义和使用方法&#xff0c;涵…