python连接mysql并使用-编程思维

由于mysql体积小,速度快,成本低,源码开放,所以一些中小型系统开发都采用mysql

我们连接mysql采用的工具包是pymysql

1.安装pymysql

pip install pymysql

2.pymysql工作图

python操作数据库主要涉及connectioncursor这两个对象

connection对象

connection对象是与数据源的唯一对话,可以使用connection对象的集合,方法,属性实现与数据的连接

connection的参数列表

参数名 类型 说明
host 字符串 连接的数据库的服务器ip,如果是本地的话,写localhost即可
port 数字 mysql服务程序的端口号,默认为3306
user 字符串 连接数据库的用户名(一般用root)
passwd 字符串 连接数据库的密码
db 字符串 连接的数据库名称
charset 字符串 连接编码,一般使用“utf8”

使用上面参数的案例

import pymysql
#创建connection对象为db
db = pymysql.connect(host="服务器ip",port=3306,user="root",passwd="han123..",db="testdb",charset='utf8')

connection对象常用的方法

方法名 说明
cursor() 使用该连接创建并返回游标
commit() 提交当前事务
rollback() 回滚当前事务
close() 关闭连接

上面方法基本使用

#由于我们已经创建connection对象为db,所以这里以db代替connection对象
#创建cursor游标,获取python版本信息
cursor = db.cursor()
#关闭连接
db.close()
#提交当前事务
db.commit()
#回滚当前事务
db.rollback()

cursor对象

我们已经创建cursor对象,为cursor,下面会将游标对象的常用方法

cursor对象是游标对象,用户用它来查询和获取结果,常用方法如下

常用方法

方法名 说明
execute() 传入一个sql语句,并执行,传入的类型是字符串
fetchone() 取结果集的下一行
fetchmany(size) 取结果集的下size行
fetchall() 取结果集中剩下的所有行
rowcount() 最近一次执行execute返回数据的行数或者影响行数
close() 关闭游标对象

3.基本案例

1.获取mysql版本

import pymysql
#创建connection对象为db
db = pymysql.connect(host="服务器ip",port=3306,user="root",passwd="han123..",db="testdb",charset='utf8')
#创建cursor游标,获取python版本信息
cursor = db.cursor()
#获取mysql版本信息
cursor.execute("select version()")
#将上面的版本结果存放到data中
data = cursor.fetchone()
print(f"版本信息为{data}")
#关闭数据库连接
db.close()

2.创建表

import pymysql
#创建connection对象为db
db = pymysql.connect(host="服务器ip",port=3306,user="root",passwd="han123..",db="testdb",charset='utf8')
#创建cursor游标
cursor = db.cursor()
#创建构建表的sql语句
sql = """
		创建表的sql语句"""
#执行sql语句
cursor.execute(sql)
#关闭数据库连接
db.close()

3.新增数据

其实就是在表中添加数据了

import pymysql
#创建connection对象为db
db = pymysql.connect(host="服务器ip",port=3306,user="root",passwd="han123..",db="testdb",charset='utf8')
#创建cursor游标
cursor = db.cursor()
#创建构建表的插入sql语句
sql = """
		创建表的插入sql语句"""
try:
	#执行sql语句
	cursor.execute(sql)
	#提交到数据库执行
	db.commit()
except:
	#发生错误回滚
	db.rollback()
#关闭数据库连接
db.close()

4.查询数据

import pymysql
#创建connection对象为db
db = pymysql.connect(host="服务器ip",port=3310,user="root",passwd="han123..",db="testdb",charset='utf8')
#创建cursor游标
cursor = db.cursor()
#创建构建表的sql查询语句
sql = """
		创建表的sql查询语句"""
try:
	#执行sql语句
	cursor.execute(sql)
	#获取所有记录的列表
	results = = cursor.fetchall()
    #mysql在for循环时,先第一行,在第二行
	for row in results:
        fname = row[0]#获取某行的第一列数据
        lname = row[1] #获取某行的第二列数据
        #打印结果
        print(fname,lname)
except:
	#报错
	print("Error:unable to fetch data")
#关闭数据库连接
db.close()

5.删除数据

import pymysql
#创建connection对象为db
db = pymysql.connect(host="服务器ip",port=3310,user="root",passwd="han123..",db="testdb",charset='utf8')
#创建cursor游标
cursor = db.cursor()
#创建构建表的sql删除语句
sql = """
		创建表的sql删除语句"""
try:
	#执行sql语句
	cursor.execute(sql)
	#提交修改
	db.commit()
except:
	#发生错误回滚
	db.rollback()
#关闭数据库连接
db.close()

6.数据库的更新

import pymysql
#创建connection对象为db
db = pymysql.connect(host="服务器ip",port=3310,user="root",passwd="han123..",db="testdb",charset='utf8')
#创建cursor游标
cursor = db.cursor()
#创建构建sql更新语句
sql = """
		创建sql更新语句"""
try:
	#执行sql语句
	cursor.execute(sql)
	#提交修改
	db.commit()
except:
	#发生错误回滚
	db.rollback()
#关闭数据库连接
db.close()

7.执行事务

事务是一组操作流程,在数据库维护中的目的是保持数据的一致性,它有原子性,一致性,隔离性和持久性四大特性,

在python数据库编程中,当游标建立就自动创建了一个隐形的数据库事务,游标的每一个方法都开始了一个新的事物

commit()和rollback()方法都开启了事务,commit()方法更新所有操作,rollback()方法回滚当前游标的所有操作

8.总结

只要是对表进行修改的,如增加数据,更新库,删除数据等,都要用commit()和rollback()方法

如果只是查询数据,则不用commit()和rollback()方法

版权声明:本文版权归作者所有,遵循 CC 4.0 BY-SA 许可协议, 转载请注明原文链接
https://www.cnblogs.com/gqboke/p/17083743.html

mysql-jdbc反序列化分析-编程思维

0x01 前言 听师傅们说这条链子用的比较广泛,所以最近学一学,本来是想配合着 tabby 或是 codeql 一起看的,但是 tabby 的环境搭建一直有问题,耽误了很久时间,所以就直接看了。 0x02 JDBC 的基础 本来不太想写这点基础的,但想了想觉得还是要补一点。 JDBC 对数据库的操作一般有以下步骤: 1

个人文章-编程思维

概述索引是MySQL的数据结构,关系着MySQL如何存储数据,查询数据;而如何操作数据,解决多线程时操作数据带来的问题,则需要通过事务来完成。InnoDB引擎支持事务,MyISAM引擎不支持事务ACID事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性原子性(Atomicity

合天网安实验室-编程思维

0x01 前言听师傅们说这条链子用的比较广泛,所以最近学一学,本来是想配合着 tabby 或是 codeql 一起看的,但是 tabby 的环境搭建一直有问题,耽误了很久时间,所以就直接看了0x02 JDBC 的基础本来不太想写这点基础的,但想了想觉得还是要补一点JDBC 对数据库的操作一般有以下步骤导入包:要求您包含

mysql sql 语句大全-编程思维

mysql sql语句大全 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'di

sql优化的一些方法-编程思维

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:   select id from t where num is null   可以在num上设置

windows安装mysql8-编程思维

在mysql根目录下新建配置文件 my.ini [mysqld] # 设置3306端口 port=33061 # 设置mysql的安装目录 basedir=D:\mysql-8.0.25-winx64 # 设置mysql数据库的数据的存放目录 datadir=D:\mysql-8.0.25-winx64\mysqlD

个人文章-编程思维

1. 明道云用户使用场景:物流、仓储人员需要在快宝快递系统上手动查询大量的物流信息,并统计到明道云表单做记录,但人工手动查询不仅费时费力,且统计过程中会出现统计错误、遗漏信息的情况,一旦物流单号的其中某个数字出现错误,还需花费大量时间进行重新核对,增加不必要的工作量。因此,物流负责人常常在想这一套流程是否可以实现自动化

个人文章-编程思维

1. 汇率查询用户使用场景:股民、留学生、出国旅游的人、金融专业人员、汇率研究等人群常常需要拿出大量的时间来关注市场上的现汇买入价、开盘价、现钞买入价等数据,然后汇总到明道云,便于查看及通过数据看板进行分析数据,但人工手动查找数据太过于繁琐且易出现数据偏差,会出现交易风险。因此,许多汇率研究者常常在想这一套流程是否可以