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

数据持久化技术(Python)的使用

  • 传统数据库连接方式:mysql(PyMySQL)
  • ORM 模型:SQLAlchemy MyBatis、 Hibernate

PyMySQL

安装:

pip install pymysql

简单使用

利用 pymysql.connect 建立数据库连接并执行 SQL 命令(需要提前搭建好数据库):

import pymysqldb = pymysql.connect(# mysql 地址host='182.92.129.158',# 账号和密码user='tmp',password='ceshiren.com',# 数据库db='tmp',charset='utf8mb4'
)if __name__ == '__main__':with db.cursor() as cursor:# 查看数据库中有多少表sql = "show tables;"# 执行 sql 语句cursor.execute(sql)# 查看所有数据print(cursor.fetchall())# 查询 name = aaaaaa 的数据sql = "select * from test_case_table where name=%s"cursor.execute(sql, ["aaaaaa"])print(cursor.fetchall())
(('test_case_table',),)
(('aaaaaa', '新的测试用例', 'test_hello.py', 'def test'),)

ORM

对象关系映射( object-relational mapping) 利用语言特性,操作数据库,比如对 Python 对象的操作,操作内容会映射到数据库里。
SQLALchemy 是 Python 编程语言下的一款 ORM 框架,该框架建立在数据库 API 之上,使用关系对象映射进行数据库操作。

安装

pip3 install SQLAlchemy

安装完成后可创建数据库连接:

engine = create_engine("mysql+pymysql://tmp:ceshiren.com@182.92.129.158/tmp?charset=utf8",echo=True,)

1.echo: 当设置为 True 时会将 ORM 语句转化为 SQL 语句打印,一般 debug 的时候可用。
2.字段解释:
3.mysql+pymysql:连接方式,采用 pymysql 。
4.tmp:ceshiren.com:用户名:密码。
5.182.92.129.158/tmp:数据库地址和数据库名称。

创建数据库

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import declarative_baseengine = create_engine("mysql+pymysql://tmp:ceshiren.com@182.92.129.158/tmp?charset=utf8",echo=True,)
# 其子类将 Python 类和数据库表关联映射起来
Base = declarative_base()
# 继承 Base
class Users(Base):__tablename__ = "users"id = Column(Integer, primary_key=True)name = Column(String(64), unique=True)def __init__(self, name):self.name = nameif __name__ == '__main__':# 生成数据库表,如果有此库会忽略Base.metadata.create_all(engine)

declarative_base() 是 SQLALchemy 内部封装的一个方法,可以让其子类将 Python 类和数据库表关联映射起来。

增和查

SQLALchemy 使用 Session 用于创建程序和数据库之间的会话,通过 Session 对象可实现对数据的增删改查。

from sqlalchemy.orm import sessionmaker
# 创建session
Session = sessionmaker(bind=engine)
session = Session()
# 添加新数据
add_user = Users("student1")
# 提交
session.add(add_user)
session.commit()
# 查询
result = session.query(Users).filter_by(name="student1").first()
print(result.id, result.name)

上述代码新增数据后进行查询,结果如下:

1 student1

数据持久化技术就先介绍到这里,大家可以试着做一下练习,
我们后面会讲跨平台API对接,请持续关注哦~

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

http://www.lryc.cn/news/222751.html

相关文章:

  • 第23章(上)_索引原理之索引与约束
  • 金蝶云星空BOS设计器中基础资料字段属性“过滤”设置获取当前界面的基础资料值作为查询条件
  • OFDM深入学习及MATLAB仿真
  • 软件测试简历原来是写了这些才让面试官已读不回
  • ESP32网络开发实例-Web服务器RGB LED调光
  • C# TCP Server服务端多线程监听RFID读卡器客户端上传的读卡数据
  • 【electron】【附排查清单】记录一次逆向过程中,fetch无法请求http的疑难杂症(net::ERR_BLOCKED_BY_CLIENT)
  • 【JS】scrollTop+scrollHeight+clientTop+clientHeight+offsetTop+offsetHeight
  • Go语言函数用法
  • 3.5、Linux:命令行git的使用
  • 基于servlet+jsp+mysql网上书店系统
  • 自用工具类整理
  • jenkins2
  • YOLOv5独家改进:分层特征融合策略MSBlock | 南开大学提出YOLO-MS |超越YOLOv8与RTMDet,即插即用打破性能瓶颈
  • HTTP 协议详解-上(Fiddler 抓包演示)
  • 龙迅LT8911EXB功能概述 MIPICSI/DSI TO EDP
  • EtherCAT主站SOEM -- 5 -- SOEM之ethercatdc.h/c文件解析
  • 【分布式事务】深入探索 Seata 的四种分布式事务解决方案的原理,优缺点以及在微服务中的实现
  • C语言 || volatile
  • 网络安全之CSRF漏洞原理和实战,以及CSRF漏洞防护方法
  • vivo 网络端口安全建设技术实践
  • [ Linux Busybox ] flash_eraseall 命令解析
  • RabbitMQ 消息中间件 消息队列
  • ChatGPT王炸升级GPT-4 Turbo:更强大还更便宜
  • 3.JMeter高级使用-让你与众不同
  • 考研408-计算机网络 第一章-计算机网络体系结构学习笔记及习题
  • 【快速使用ShardingJDBC的哈希分片策略进行分库分表】
  • 102. 二叉树的层序遍历
  • macOS磁盘分区调整软件--Paragon Camptune X 中文
  • kaggle中报错NameError: name ‘q_1‘ is not defined