(五)python实战——使用sqlalchemy完成Sqlite3数据库表的增、删、查、改操作案例

前言

本节内容我们使用sqlalchemy框架完成Sqlite3数据库表的增删查改等常规操作,相较于原生Sqlite的数据库操作,sqlalchemy通过ORM映射完成实体对象的映射,通过映射关系完成对象和数据的转换,完成数据的操作。

正文

①在项目中使用pip命令安装sqlalchemy框架

命令: pip install sqlalchemy

②创建实体映射对象User数据库表

# 引入sqlalchemy依赖
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.orm import declarative_base, sessionmaker# 申明基类对象
Base = declarative_base()# 定义user表实体对象
class User(Base):# 定义表名__tablename__ = 'user'# 定义字段id = Column(Integer, primary_key=True)name = Column(String(255))age = Column(Integer)def __repr__(self):return "User(id:{},name:{},age:{})".format(self.id, self.name, self.age)

③创建sqlite3的session数据库连接

# 引入sqlalchemy依赖
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.orm import declarative_base, sessionmaker# 申明基类对象
Base = declarative_base()# sqlite连接初始化
class SqliteSqlalchemy(object):def __init__(self):# 创建sqlite连接引擎engine = create_engine('sqlite:///./sqlalchemy.db', echo=True)# 创建表Base.metadata.create_all(engine, checkfirst=True)# 创建sqlite的session连接对象self.session = sessionmaker(bind=engine)()

 ④新增一条用户信息数据

- 代码实现

# 引入sqlalchemy依赖
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.orm import declarative_base, sessionmaker# 申明基类对象
Base = declarative_base()# 定义user表实体对象
class User(Base):# 定义表名__tablename__ = 'user'# 定义字段id = Column(Integer, primary_key=True)name = Column(String(255))age = Column(Integer)def __repr__(self):return "User(id:{},name:{},age:{})".format(self.id, self.name, self.age)class SqliteSqlalchemy(object):def __init__(self):# 创建Sqlite连接引擎engine = create_engine('sqlite:///./sqlalchemy.db', echo=True)# 创建表Base.metadata.create_all(engine, checkfirst=True)# 创建Sqlite的session连接对象self.session = sessionmaker(bind=engine)()if __name__ == '__main__':# 初始化Sqlite数据库连接,获取数据库session连接session = SqliteSqlalchemy().session# 新增一条用户信息数据user = User(name='xiaoming', age=23)session.add(user)session.commit()# 关闭数据库session连接session.close()

- 执行结果

 

⑤新增多条用户信息数据

- 代码实现

if __name__ == '__main__':# 初始化Sqlite数据库连接,获取数据库session连接session = SqliteSqlalchemy().session# 新增多条用户信息数据datas = [User(name='张三', age=20),User(name='李四', age=21),User(name='王五', age=22),]session.add_all(datas)session.commit()# 关闭数据库session连接session.close()

 - 执行结果

⑥查询表中全部用户数据

- 代码实现

 

if __name__ == '__main__':# 初始化Sqlite数据库连接,获取数据库session连接session = SqliteSqlalchemy().session# 查询user用户表中的全部数据result = session.query(User.id, User.name, User.age).all()print(result)# 关闭数据库session连接session.close()

- 执行结果

⑦根据用户ID更新用户数据

- 代码实现

if __name__ == '__main__':# 初始化Sqlite数据库连接,获取数据库session连接session = SqliteSqlalchemy().session# 根据ID更新用户数据user_id = 1session.query(User).filter(User.id == user_id).update({User.name: "王五", User.age: 18})session.commit()# 关闭数据库session连接session.close()

 - 执行结果

⑧ 根据用户ID删除用户数据

- 代码实现

if __name__ == '__main__':# 初始化Sqlite数据库连接,获取数据库session连接session = SqliteSqlalchemy().session# 根据id删除数据user_id = 1del_count = session.query(User).filter(User.id == user_id).delete()print('删除数目:', del_count)session.commit()# 关闭数据库session连接session.close()

- 执行结果

结语

六月份最后一篇,关于使用sqlalchemy完成Sqlite3数据库表的增、删、查、改操作案例到这里就结束了,下期见。。。。。。

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

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

相关文章

Matlab|改进的粒子群算法优化支持向量机(回归拟合)

作者在前面的文章中介绍了粒子群算法的原理及其2种改进算法,本文将基于这三种优化方法,应用于支持向量机进行预测,并对比改进算法与标准粒子群算法的预测性能,结果显示改进后的方法能够得到更佳的预测效果。 00 文章目录 1 支持…

jupyter中如何管理内核

1、jupyter notebook如何和已有的虚拟环境关联起来: 如果在电脑中某个conda的虚拟环境中已经安装了jupyter,其他虚拟环境想要作为内核在jupyter中使用,分为两个步骤: 第一步:在没有jupyter的环境中下载ipykernel&…

SPI机制

SPI机制是Service Provider Interface,是服务提供发现机制,用来启用框架扩展和替换组件。比如java.sql.Driver接口,其他不同厂商可以针对同一接口做出不同的实现,MySQL和PostgreSQL都有不同的实现提供给用户,而Java的S…

局部均方差滤波(磨皮)

note 锚点灰度值 用 原图像对应点的原灰度值 和 局部均值加权得到 局部均值 由 掩膜 区域计算得到 权重 由 局部方差 与用户输入参数计算确定 code // 局部均方差滤波 /*\brief 局部均方差滤波\param src:原矩阵,单通道\param res:结果矩阵\param size:掩膜矩形…

电动力学复习提纲

电动力学复习提纲 电动力学核心知识点 电磁场能量密度和能流 场和电荷的能量守恒电磁场的能量密度和能流密度 电偶极矩,磁偶极矩和电四极矩 电极化强度矢量与电偶极矩 磁化强度与磁偶极矩 电势的多级展开 磁矢势的多级展开 非相对论体系的电磁能 静电能 小区…

基于Java+SpringBoot+Mybaties-plus+Vue+ElementUI 在线考试管理系统的设计与实现

一.项目介绍 学生在线考试系统分为三类角色 超管、老师、学生 超级管理员:维护考试管理、提供管理、成绩查询、学生管理以及教师管理 老师:维护考试管理、提供管理、成绩查询以及学生管理 学生:我的试卷…

解决:yarn 无法加载文件 “C:\Users\admin\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本“ 的问题

1、问题描述: 其一、报错的整体代码为: yarn : 无法加载文件 C:\Users\admin\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本 // 整体的报错代码为 : yarn : 无法加载文件 C:\Users\admin\AppData\Roaming\npm\yar…

Bootloader Design of PIC18 series MCU

注意:下列描述是在PIC单片机上启用Bootloader的一个相关知识的近似完备集。所有需要了解的,bootloader与用户态程序交互的理论知识都已给出。 1.概述 嵌入式产品化后,需要考虑现场升级,单片机如果需要添加现场升级功能&#xff…

【数据结构】带你玩转排序:堆排序、希尔排序、插入排序、选择排序、冒泡排序、快排(多版本)、归并排序

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 常见算法的实现 插入排序 希尔排序 堆排序 选择排序 冒泡排序 快速排序 Hoare版本 随机选Keyi 三数取中 挖坑法 前后指针版本 归并排序 常见算法的实现 插入排序 动画演示&…

记一次自建靶场域渗透过程

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 环境搭建02 外网突破03 权限提升并维持(1)获取 meterpreter 会话(2)尝试开启远程桌面(3)Msf 派生 Cobalt Strike shell&#…

【C++】4.工具:读取yaml配置信息

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍读取yaml配置信息。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路&…

CC1310 CC1310F128RSMR 超低功耗SUB-1GHz 无线 MCU芯片

1 器件概述 1 1 特性 • 微控制器 – 性能强大的 Arm Cortex -M3 处理器 – EEMBCCoreMark评分:142 – EEMBC ULPBench™评分:158 – 时钟速率最高可达 48MHz – 32KB、64KB 和 128KB 系统内可编程闪存 – 8KB 缓存静态随机存取存储器 (SRAM) &#xff…