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

Python 从入门到实战31(数据库编程接口)

        我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。

        上篇文章我们讨论了高级文件操作的相关知识。今天我们将学习一下数据库编程接口的相关知识。

        程序运行时,数据都是 存储在内存中。当程序终止时,通常都需要将数据保存在磁盘上。前面我们也学习了将数据写入到文件中,读取文件数据等。为了方便程序保存和读取数据,并且能直接通过条件快速查询到指定的数据,就出现了数据库(database)。本节主要介绍数据库API接口中的连接对象和游标对象。

1、连接对象

        数据库连接对象(connection object)提供了获取数据库游标对象和提交/回滚事务的方法,以及关闭数据库连接。

1)获取连接对象

        获取连接对象需要使用connect()函数。需要根据不同的数据库类型选择不同的参数,

若要访问MySQL 数据库,需要同时下载MySQL数据库模块。

connect()函数参数说明:

  1. host‌:数据库服务器的主机名或IP地址。
  2. ‌user‌:用于连接的用户名。
  3. ‌password‌:用户的密码。
  4. ‌db‌:要连接的数据库名称。
  5. ‌port‌:数据库端口号,默认为3306。
  6. ‌charset‌:指定的字符集。
  7. dsn:数据源名称,给出该参数表示数据库依赖
  8. cursorclass‌:游标类型,如:ml-search[DictCursor],用于指定返回查询结果时的数据格式。

        这些参数的具体使用取决于所连接的数据库类型,但大多数关系型数据库(如MySQL、PostgreSQL等)都支持这些基本参数。使用这些参数,可以灵活地连接到不同类型的数据库服务器,进行数据操作和处理‌。

例如,使用PyMySQL模块连接MySQL数据库,代码参考:

conn = pymysql.connect(host = "localhost",
                       user ="user",
                       password = '123456',
                       db = 'test',
                       charset = 'utf-8',
                       cursorclass = pymysql.cursors.DictCursor  
)

2)连接对象的方法

        上面讲到的connect()函数返回连接的对象。这个对象表示当前和数据库的会话。

        连接对象支持的方法如下:

  1. ‌cursor()‌:使用当前连接创建并返回一个游标对象。游标用于执行SQL查询和获取查询结果。
  2. ‌commit()‌:提交当前事务。在数据库操作中,事务是一系列操作,要么全部成功,要么全部失败。commit()方法用于保存事务的状态,确保所有操作都被永久保存。
  3. ‌rollback()‌:回滚当前事务。如果在事务中的某个操作失败,可以使用rollback()方法撤销事务中的所有操作,恢复到事务开始前的状态。
  4. ‌close()‌:关闭当前连接。当不再需要与数据库的连接时,应使用close()方法关闭连接,释放资源。

        这些方法提供了对数据库的基本操作,包括执行查询、管理事务和处理连接的生命周期。通过这些方法,可以实现对数据库的有效管理和操作‌

2、游标对象

        游标对象(cursor object)代表数据库中的游标,用于抓取数据库操作的上下文。

主要提供执行SQL语句、调用存储过程以及获取查询结果等方法。

        如何获取游标对象呢?通过使用连接对象的cursor()方法。游标对象的属性如下所示:

 游标属性有:

 description:数据库类型和值的相关信息。

 rowcount:返回结果的行数统计信息。如select、update、callproc等

游标对象的方法/属性如下表所示:

方法

功能

execute(sql[, parameters])

执行数据库操作,如执行一条SQL语句

executemany(sql, seq_of_parameters)

用于批量执行SQL语句

fetchone()

捕获查询结果集的下一条记录,返回单个序列,在没有更多数据可用时不返回

fetchmany(size=cursor.arraysize)

搜索查询结果的下一组行,返回列表。当不可用行时,将返回一个空列表。

fetchall()

捕获查询结果的所有(剩余)记录,返回列表。光标的数组大小属性可能会影响此操作的性能。如果没有行,则返回空列表。

close()

关闭当前游标

Callproc(procname,[,parameters])

调用存储过程,procname为存储过程名,parameters为存储过程提供的参数

connection.rollback()

回滚从上一次调用 commit() 之后对数据库所做的所有变动

cursor.executescript(sql_script)

接收到脚本会执行多个 SQL 语句,它首先执行 COMMIT 语句,然后执行作为参数传入的 SQL 脚本

connection.executescript(sql_script)

这是一个非标准的快捷方式,通过调用游标()方法创建游标对象,使用给定的sql_script调用游标的executescript()方法,并返回游标。

connection.total_changes()

返回自数据库连接打开以来被修改、插入或删除的数据库总行数

今天就学到这里了,明天要继续加油啊!下节我们试着连接一下MySQL数据库。

相关文章:

  • 【个人笔记】数据一致性的解决方案
  • MySQL-数据库约束
  • 翻译:Recent Event Camera Innovations: A Survey
  • Anki 学习日记 - 卡片模版 - 单选ABCD(纯操作)
  • 《Linux运维总结:使用 MongoDB工具备份和恢复mongodb 7.0.14分片集群(方案一)》
  • yolov8环境安装
  • GPT+AI技术实战:构建多端智能虚拟数字人的创新与突破
  • WebRTC中的维纳滤波器实现详解:基于决策导向的SNR估计
  • 0基础学习CSS(六)字体
  • C++中的lower_bound函数详解
  • 孙论文——定标
  • 牛顿迭代法求解x 的平方根
  • lombok详细教程(详解)
  • windows系统中后台运行java程序
  • UnityShader 一种RGB分离效果
  • 【Leetcode】104. 二叉树的最大深度
  • 30天自制操作系统-2
  • ES6 学习笔记(一)let,const和解构赋值
  • Go 语言编译器的 //go: 详解
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • PermissionScope Swift4 兼容问题
  • Promise面试题2实现异步串行执行
  • spring security oauth2 password授权模式
  • 测试开发系类之接口自动化测试
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 和 || 运算
  • 经典排序算法及其 Java 实现
  • 前端技术周刊 2019-02-11 Serverless
  • 前端面试总结(at, md)
  • 如何进阶一名有竞争力的程序员?
  • 手写一个CommonJS打包工具(一)
  • 我是如何设计 Upload 上传组件的
  • 线性表及其算法(java实现)
  • 通过调用文摘列表API获取文摘
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​水经微图Web1.5.0版即将上线
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • #100天计划# 2013年9月29日
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • ()、[]、{}、(())、[[]]命令替换
  • (11)iptables-仅开放指定ip访问指定端口
  • (5)STL算法之复制
  • (7)摄像机和云台
  • (二)JAVA使用POI操作excel
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (南京观海微电子)——COF介绍
  • (十三)Flink SQL
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (一)kafka实战——kafka源码编译启动
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • *2 echo、printf、mkdir命令的应用