首页 > 数据库 >52.数据库操作

52.数据库操作

时间:2024-01-16 16:26:34浏览次数:33  
标签:数据库 db pymysql 52 cursor connect close 操作

数据库操作

数据库操作是每一门编程语言中都必不可少的操作。

使用程序操作数据库之前,需要在本地或服务器先安装数据库,比如 MySQL 数据库。

Python 中使用第三方模块 PyMySQL 操作数据库,使用前需要先进行安装。

安装 PyMySQL

pip install pymysql

操作流程

使用 PyMySQL 模块操作数据非常简单,步骤如下:

  1. 导入模块
  2. 连接数据库
  3. 创建游标对象
  4. 执行数据库操作
  5. 关闭游标对象
  6. 关闭数据库连接

导入模块

import pymysql

连接关闭数据库

操作数据库之前,需要先进行数据库连接,和使用其它方式操作数据库方式相同。

PyMySQL 模块提供了四个连接数据库的函数名,其本质是多个变量的函数引用横等赋值,最终还是执行一个函数。

官方代码:

Connect = connect = Connection = connections.Connection

按代码的赋值顺序,推荐使用 Connect 方式连接,其它函数使用方式相同。

连接数据库函数格式及主要参数如下:

Connect(host, port, user, password, database, charset)
  • host:数据库主机的地址,默认为 localhost
  • port:数据库的端口号,默认为 3306
  • user:连接数据库所用的用户名。
  • password:连接数据库所用的密码。
  • database:要连接的数据库的名称。
  • charset:连接数据库时使用的字符集,默认为"utf8"。

目前本机已存在数据库 newcms 及数据库中的数据表。

import pymysql

db_connect = pymysql.Connect(host="localhost", port=3306, user="root", password="123123123", database="cms", charset="utf8")
print(db_connect)
db_connect.close()

数据库使用完毕后,需要调用 close() 方法将数据库连接对象关闭,让其断开数据库连接,避免资源泄漏。

获取和关闭游标对象

数据库连接对象创建成功后,还需要创建游标对象。

游标对象的作用是用来执行数据库操作,在执行完一次操作后,应调用 close() 方法将游标对象关闭。

在进行数据库操作时,每次数据库操作都应该建立一个游标对象,在操作完毕后将其关闭,不应使用一个游标对象进行多次操作。

PyMySQL 模块使用 数据库连接对象.cursor() 方法获取游标对象。

import pymysql

db_connect = pymysql.Connect(host="localhost", port=3306, user="root", password="123123123", database="cms", charset="utf8")
cursor = db_connect.cursor()
print(cursor)
cursor.close()
db_connect.close()

执行 SQL 操作

PyMySQL 模块使用 execute() 方法执行 SQL 语句,实现数据库操作。

游标对象.execute(query, args=None)
  • query:需要执行的 SQL 语句
  • args:为 SQL 语句中的占位符提供参数,防止 SQL 注入的发生
import pymysql

db_connect = pymysql.Connect(host="localhost", port=3306, user="root", password="123123123", database="cms", charset="utf8")
cursor = db_connect.cursor()
cursor.execute("select * from class")
cursor.close()
db_connect.close()

查询操作

查询单条记录

使用 execute 执行完毕 SQL 语句后, 可以使用 游标对象.fetchone() 方法获取一条查询结果。

fetchone() 方法可重复使用,程序会继续向后读取查询结果。如果无查询结果可读取,则返回 None

import pymysql

db_connect = pymysql.Connect(host="localhost", port=3306, user="root", password="123123123", database="cms", charset="utf8")
cursor = db_connect.cursor()
cursor.execute("select * from class")
result = cursor.fetchone()
print(result)
result = cursor.fetchone()
print(result)
cursor.close()
db_connect.close()

查询多条记录

可以使用 游标对象.fetchall() 方法获取全部查询结果。

import pymysql

db_connect = pymysql.Connect(host="localhost", port=3306, user="root", password="123123123", database="cms", charset="utf8")
cursor = db_connect.cursor()
cursor.execute("select * from class")
result = cursor.fetchall()
print(result)
cursor.close()
db_connect.close()

查询指定条数记录

可以使用 游标对象.fetchmany(size) 方法获取指定数量查询结果。

import pymysql

db_connect = pymysql.Connect(host="localhost", port=3306, user="root", password="123123123", database="cms", charset="utf8")
cursor = db_connect.cursor()
cursor.execute("select * from class")
result = cursor.fetchmany(5)
print(result)
cursor.close()
db_connect.close()

插入操作

执行插入操作同样使用 execute() 方法,插入数据时的 SQL 语句中的新数据,可以使用传参的方式填 入。

参数可以使用 元组 或 列表 形式传入。

在插入数据操作完成后,需要对所做的更改操作进行提交。

提交操作使用 数据库连接对象.commit() 方法。

import pymysql

db_connect = pymysql.Connect(host="localhost", port=3306, user="root", password="123123123", database="cms", charset="utf8")
cursor = db_connect.cursor()
insert_sql = ''' insert into class(name,sort,type) values(%s, %s, %s) '''
values = ("创业宝典", 9, 0)
result = cursor.execute(insert_sql,values)
print(result)
db_connect.commit()
cursor.close()
db_connect.close()

更新操作

更新操作同插入操作,只是 SQL 语句不同,操作完毕后,需要执行提交操作。

import pymysql

db_connect = pymysql.Connect(host="localhost", port=3306, user="root", password="123123123", database="cms", charset="utf8")
cursor = db_connect.cursor()
insert_sql = ''' update class set name=%s,sort=%s where id=%s'''
values = ("创业成功宝典", 99, 10)
result = cursor.execute(insert_sql,values)
print(result)
cursor.close()
db_connect.commit()
db_connect.close()

删除操作

删除操作同插入操作和更新操作,只是 SQL 语句不同,操作完毕后,需要执行提交操作。

import pymysql

db_connect = pymysql.Connect(host="localhost", port=3306, user="root", password="123123123", database="cms", charset="utf8")
cursor = db_connect.cursor()
insert_sql = ''' delete from class where id=%s'''
values = (10,)
result = cursor.execute(insert_sql,values)
print(result)
cursor.close()
db_connect.commit()
db_connect.close()

标签:数据库,db,pymysql,52,cursor,connect,close,操作
From: https://www.cnblogs.com/csfsz/p/17967913

相关文章

  • 在国产操作系统下管理Oracle数据库
    Oracle公司是全球最大的信息管理软件及服务供应商,其开发的数据库产品因性能卓越而闻名,占有最大的市场份额,被广泛用于各个市场领域。然而在信创化的时代,国产操作系统已然是大势所趋,但是由于历史原因,在应用开发中使用Oracle数据库是市场主流,因此用户急需一款可以在国产操作系统上......
  • 使用shell脚本将doDBA采集到的日志会话信息导入到MySQL数据库
    【背景说明】使用doDBA工具监控的会话信息导入到MySQL数据库的表中【环境说明】doDBA工具采集会话信息(之前有脚本说明)【脚本说明】处理dodba日志信息将日志的innodb日志信息去除审计日志的名称要改为原来的dodba.log名称cd/data/backup/doDBA/log/cpdodba_20231226_09......
  • jmeter并发与持续压测生成测试报告操作日志
    接口压测的方式:1、同时并发:设置线程组、执行时间、循环次数,这种方式可以控制接口请求的次数2、持续压测:设置线程组、循环次数,勾选“永远”,调度器(持续时间),这种方式可以控制压测周期时间指定并发数 例1:设置线程数:10;设置执行时间:0;设置循环次数:5说明:使10个线程启动并同时运......
  • 数据库高可用方案
    MySQL高可用架构MySQL高可用架构主要包括:主从复制(Master-SlaveReplication):通过将主数据库的更改同步到一组从数据库来实现高可用性。当主数据库宕机时,从数据库可以被提升为新的主数据库。主主复制(Master-MasterReplication):两个或多个主数据库相互同步,每个主数据库都可以处理......
  • 使用shell脚本xtrabackup自动恢复MySQL数据库
    【背景说明】按照安全的一些要求,需要定期对数据库进行恢复演练操作【环境说明】MySQL5.7的xtrabackup全库xbstream的加密备份(如果不是流备份跟加密,去掉相关参数)【脚本说明】v_backupdir="/mysqlbackup/recovery/yiyuan"备份文件的目录路径v_dir="/mysqlbackup/recovery/......
  • 数据库分库分表
    何时分库分表数据库性能出现问题后,一般按照如下步骤优化:①参数优化②缓存、索引③读写分离④分库分表(最终方案)分库服务器磁盘空间不足、内存不足、CPU压力过大,导致读写性能瓶颈。网络带宽不足,响应慢,导致客户端连接等待/超时。数据量过大,影响读写性能;MySQL单库......
  • 2023年12月国产数据库大事记-墨天轮
    本文为墨天轮社区整理的2023年12月国产数据库大事件和重要产品发布消息。目录12月国产数据库大事记TOP1012月国产数据库大事记(时间线)产品/版本发布兼容认证代表厂商大事记厂商年度总结厂商活动排行榜新增数据库相关资料12月国产数据库大事记TOP1012月国产数据......
  • C#DataGridView数据批量插入数据库中(测试未果)
    datagridview表格的数据要导入后台数据库表中时,如果记录比较多,用SQL速度慢,尝试用批量导入,未能成功,继续努力;usingNpgsql;usingNpgsqlTypes;usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingS......
  • 【JMeter】jmeter 操作 mysql 数据库
    一、下载驱动包二、JDBC连接配置三、JDBCRequest1、单条查询语句2、多条查询语句3、增删改语句4、参数化sql语句5、占位符语句 本文内容基于如下测试环境:JMeter4.0版本Win7系统mysql-connector-java-5.1.7-bin.jar不同环境下可能会有不一致的地方。......
  • jmeter jdbc操作myql数据库及mysql驱动下载
     mysql驱动下载https://dev.mysql.com/downloads/connector/j/   1、先安装mysql的驱动mysql-connector-java-5.1.7-bin.jar配置jdbc的connectionconfigurationDatabaseUrl:jdbc:mysql://xxx.xxx.xxx.xxx:3306/test?allowMultiQueries=true&serverTimezone=UTC&c......