PyMySQL的一些基本使用

本文介绍了如何使用Python的PyMySQL库来实现与MySQL数据库的交互,包括安装PyMySQL、建立数据库连接、创建游标、执行SQL语句以及数据的增删改查等基本操作。
部署运行你感兴趣的模型镜像

以下学习笔记参考自:
https://github.com/datawhalechina/fun-rec/blob/master/docs/%E7%AC%AC%E4%BA%8C%E7%AB%A0%20%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F%E5%AE%9E%E6%88%98/2.2%E6%96%B0%E9%97%BB%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F%E5%AE%9E%E6%88%98/docs/2.2.1.1%20Mysql%E5%9F%BA%E7%A1%80.md

安装pymysql

pip install PyMySQL

连接数据库

import pymysql

# 这里登陆到我之前创建的root账户
connection=pymysql.connect(
    host='localhost',
    user='root',
    password='zxc19991109',
    database='shop',
    charset='utf8mb4',
    cursorclass=pymysql.cursors.DictCursor
)

参数解释:

  • host:数据库服务器地址,默认localhost;
  • user:所要登陆的用户名;
  • password:用户的登录密码;
  • database:所要连接的数据库库名;
  • charset:使用的字符类型;
  • cursorclass:定义游标使用的类型,通过指定游标使用的类型,在返回输出的结果时将按照指定的类型进行返回。例如,这里设置为字典游标。

创建游标

游标,可以理解为在命令行中的光标。在命令行中,我们是在光标处键入语句的。这里游标的起到类似作用。

# 创建游标
cursor = db.cursor()

除了在初始化connect的实例时指定游标类型,我们在初始化游标时也可以指定游标类型,默认为元组类型。

cursor = db.cursor(cursor=pymysql.cursors.DictCursor)
  • connect下的类方法:

    • close():在完成操作后,需要关闭与数据库之间的连接;
    • commit():如果执行语句中发生了数据更改,需要提交更改到稳定的存储器;
    • cursor(cursor=None):创建一个游标,前面我们在初始化connect类是指定了游标类型,通过cursor初始化游标时,也可以进行游标类型指定;
    • rollback():事务回滚;
  • pymysql.cursors下的类方法:

    • close():结束时,关闭游标;
    • execute():通过游标执行语句;
    • executemany():通过游标执行多条语句;
    • fetchone():获取单条数据;
    • fetchmany(size=None):获取size条数据;
    • fetchall():获取多条数据;
    • scroll(value, mode):数据的查询操作都是基于游标,可以通过scroll控制游标的位置。
      • mode=absolute:绝对位置移动,控制游标位置到上一次查询的第value条数据,最小值为0;
      • mode=relative:相对位置移动,基于当前位置,跳过value条数据;

示例

1.创建表

import pymysql

connection=pymysql.connect(
    host='localhost',
    user='root',
    password='zxc19991109',
    database='shop',
    charset='utf8mb4',
    cursorclass=pymysql.cursors.DictCursor
)

cursor=connection.cursor(cursor=pymysql.cursors.DictCursor)

sql="""
create table Employee(
    id int primary key,
    name char(15) not null
)
"""

cursor.execute(sql)

可以看到mysql的shop库中多了名为employee的表
请添加图片描述

sql="insert into employee (id,name) values (%s,%s)"
values=[
    (1,'xiaoli'),
    (2,'xiaozhi'),
    (3,'xiaoming'),
    (4,'xiaoyue'),
    (5,'xiaoxi')
]

try:
    cursor.executemany(sql,values)
    #提交事务
    connection.commit()
except:
    connection.rollback()

#关闭光标及连接
cursor.close()
connection.close()

以上内容紧接创建库,通过查看数据库我们可以发现employee表下多了一些数据
请添加图片描述

在之前的基础上,执行查询操作

import pymysql

# 以admin身份连接到数据库shop
connection = pymysql.connect(
    host='localhost',
    user='root',
    password='zxc19991109',
    database='shop',
    charset='utf8mb4',
)

with connection:
    # 创建游标
    cursor = connection.cursor(cursor=pymysql.cursors.DictCursor)

    # 1. 通过fetchone只查询一条
    cursor.execute("SHOW CREATE TABLE Employee")
    result = cursor.fetchone()
    print(f'查询结果1: \n{result}')

    # 2. 通过fetchmany查询size条
    cursor.execute("DESC Employee")
    result = cursor.fetchmany(size=2)
    print(f'查询结果2: \n{result}')

    # 3. 通过fetchall查询所有
    cursor.execute("SELECT * FROM Employee")
    result = cursor.fetchall()
    print(f'查询结果3: \n{result}')

    # 4. 通过scroll回滚到第0条进行查询
    cursor.scroll(0, mode='absolute')
    result = cursor.fetchone()
    print(f'查询结果4: \n{result}')

    # 5. 通过scroll跳过2条进行查询
    cursor.scroll(2, mode='relative')
    result = cursor.fetchone()
    print(f'查询结果5: \n{result}')

    cursor.close()

执行结果:
请添加图片描述

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值