Python3操作MySQL8数据库

本章用到的软件为:软件 : pycharm专业版   数据库:MySQL 8.0.28 

pycharm插件 : pymysql

本章分为理论与实操,软件插件请自行准备好  

如果初学者理论看的费劲,可以对照实操一点点看,稍微有些基础就差不多可以看懂的。

基础理论

        数据连接对象主要是提供获取数据库游标对象和提交/回滚事务的方法,以及关闭数据库

1、获取连接对象

        连接数据库需要使用 pymysql.connect() 函数,该函数有多个参数,具体使用哪些参数取决于数据库的类型。

        connect()函数常用参数说明

参数说明
dsn数据源名称,给出改参数表示数据库依赖
user用户名
password用户密码
host主机名或IP地址
database数据库名称

 2、连接对象的方法

        connect()函数返回连接对象,这个对象表示当前和数据库的会话状态。

连接对象支持的方法以及说明 

方法说明
close()关闭数据库连接
commit()提交事务
rollback()回滚事务
cursor()获取游标对象,操作数据库,如执行DML语句操作,调用存储过程等

3、游标对象

        游标对象代表数据库中的游标,用于指示抓取数据操作的上下文。主要提供执行SQL语句、调用存储过程、获取查询结果等方法。

        可以通过使用连接对象的 cursor 方法,可以获取游标对象。

游标对象的方法/属性以及说法

方法/属性说明
callproc(procname,[parameters])调用存储过程,需要数据库的支持
close()关闭当前游标
execute(operation,[parameters])执行数据库操作,SQL语句或者数据库命令执行
executemany(operation,sql_of_params)用于批量操作,比如批量更新
fetchone()获取单条数据结果
fetchmany()获取指定数量的记录
fetchall()获取多条数据
nextset()跳至下一个可用的结果
arraysize指定使用fetchmany方法获取的行数,默认为1
setinputsizes(*args)设置在调用execute*()方法时分配的内存区域大小
setoutputsizes(*args)设置列缓冲区大小,对大数据列入LONGS和BLOBS尤其有用

实操

1、使用pymysql连接MySQL数据库

格式:

import pymysql as m

# 打开数据库进行链接 host 主机名或ip  user:用户名 password:密码 database:数据库名称
db = m.connect(host="localhost", user="user", password="User.123", database="Practice")
# 使用cursor方法创建一个游标对象
cursor = db.cursor()
# 使用 execute 方法执行sql 查询
cursor.execute("select * from app_handoverinfo;")
# 使用 fetchall 方法获取多条数据  单条数据用 fetchone()
data = cursor.fetchall()
# 输出数据
print(data)
db.close() # 关闭数据库  

 # 使用完后记得关闭数据库
#原因:python编程中可以使用pymysql进行数据库连接及增删改查操作,但每次连接mysql请求时,都是独立的去请求访问,比较浪费资源,而且访问数量达到一定数量时,对mysql的性能会产生较大的影响。

2、使用pymysql创建数据表

import pymysql as m

# 打开数据库进行链接 host 主机名或ip  user:用户名 password:密码 database:数据库名称
db = m.connect(host="localhost", user="user", password="User.123", database="Practice")
# 使用cursor方法创建一个游标对象
cursor = db.cursor()
#cursor.execute("drop table test1;") #如果库中有该表则删除该表重新创建

# 使用sql语句去创建一个数据表
sql = """CREATE TABLE test1(
id INT NOT NULL AUTO_INCREMENT COMMENT 'ID',
sno INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '学号',
sName VARCHAR(20) NOT NULL COMMENT '姓名',
sex ENUM('男','女','保密') NOT NULL DEFAULT '保密' COMMENT '性别',
age TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '年龄',
Time TIMESTAMP NOT NULL DEFAULT NOW() COMMENT '入学时间',
-- Time DATE NOT NULL DEFAULT '1000-01-01' COMMENT '入学时间', # 注意设定默认值的时候 NOW 以及其他函数不管用
PRIMARY KEY(id),
INDEX(sName),
UNIQUE(sno)  # 写法误区 切勿在最后一行的时候  加逗号 !
)ENGINE INNODB CHARSET utf8mb4 COLLATE utf8mb4_bin AUTO_INCREMENT=10;"""  # 注意用三个引号引起来不然会报错

# 使用 execute 方法执行sql
cursor.execute(sql)
cursor.execute("show create table test1;")
# 使用 fetchall 方法获取多条数据  单条数据用 fetchone()
data = cursor.fetchall()
# 输出数据
print(data)  
db.close()
# 关闭数据库

 3、操作MySQL数据表

批量插入数据方法

# -*- coding: UTF-8 -*-

import pymysql as m

# 打开数据库进行链接 host 主机名或ip  user:用户名 password:密码 database:数据库名称
db = m.connect(host="localhost", user="user", password="User.123", database="Practice")
# 使用cursor方法创建一个游标对象
cursor = db.cursor()
# 数据列表
data = [(1, "张三", "男", "25",),
        (2, "李四", "女", "20"),
        (3, "王五", "保密", "23")
        ]

try:
    # 执行SQL语句 插入多条数据
    cursor.executemany("insert into test1(sno,sName,sex,age) values(%s,%s,%s,%s);", data)
    # 提交数据
    db.commit()
    print("成功")
except:
    # 发生错误回滚
    db.rollback()
    print("失败")
cursor.execute("select * from test1;")
select = cursor.fetchall()
# 输出数据
print(select)
db.close()
# 关闭数据库

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

i鲸落i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值