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

news/2025/1/3 3:55:14/

前言

本节内容我们使用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.ppmy.cn/news/658663.html

相关文章

【Java】Java核心 78:Git 教程(1)Git 概述

文章目录 01.GIT概述目标内容小结 02.GIT相关概念目标内容小结 01.GIT概述 Git是一个分布式版本控制系统,常用于协同开发和版本管理的工具。它可以跟踪文件的修改、记录历史版本,并支持多人协同工作。通过Git,你可以轻松地创建和切换分支、合…

数字化转型再下一城,数字孪生厂商优锘科技宣布完成超3亿元融资

数字孪生技术是传统行业数字化转型的重要抓手,属于国家优先发展的战略性产业之一,已列入国家“十四五”规划纲要。 6月30日消息,数字孪生领导厂商“UINO优锘科技”宣布已于近期完成C轮超3亿元融资,本轮融资由中国互联网投资基金领…

火山安卓免费版超3窗口限制

火山安卓免费版超3窗口限制 一、布局 ①外层线性布局器,命名为窗口1,里面添加4个按钮 ②创建多个 窗口1(线性布局器)创建完毕后,设置隐藏 然后再用同样的方法创建窗口2 窗口2创建完毕后,同样隐藏,继续创建窗口3&…

今年涨幅超3倍!区块链牛股四方精创还能再度起爆吗?

随着高层的发话,区块链概念股一度掀起一波炒作热潮,越来越多的上市公司开始涉足区块链业务。但是区块链概念股鱼龙混杂,面对众多质量参差不齐的股票,大家往往不知道该如何下手。 陀螺财经重磅推出【区块链概念股分析】栏目&#x…

数牍科技完成超3亿元A轮融资,隐私工程守护数据全生命周期流通协作

允峰 发自 凹非寺量子位 编辑 | 公众号 QbitAI 2021年11月25日,北京数牍科技有限公司(以下简称「数牍科技」)宣布完成3.08亿元人民币Pre-A及A轮融资,本轮融资由GGV纪源资本、上海人工智能产业基金、深创投联合领投,老股…

Java基础 超详细(3)

文章目录 前言 一、和equals的区别 二、重写和重载的区别 三、接口和抽象类的异同点 总结 前言 书接上回,这期我们针对前两期的知识点中容易混淆以及面试中经常出现的问题进行一个总结 一、和equals的区别 我们说到过Java的数据类型有基本数据类型,当基…

汇成股份科创板上市:年营收8亿市值146亿 郑瑞俊负债超3亿

雷递网 雷建平 8月18日报道 合肥新汇成微电子股份有限公司(简称:“汇成股份”,股票代码为:“688403”)昨日在科创板上市。 汇成股份此次发行16,697万股,发行价为8.88元,募资总额为14.83亿元。 汇…