pymysql的安装以及操作实战指南

 更新时间:2023年11月06日 09:02:46   作者:爱Python的小沐沐  
这篇文章主要给大家介绍了关于pymysql的安装以及操作的相关资料,pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同,文中通过代码介绍的非常详细,需要的朋友可以参考下

1、pymysql的安装

1.1 conda环境解释器在线安装

以管理员身份运行终端或者使用Anaconda Powershell Prompt并以管理员身份运行

conda install -c conda-forge pymysql

注意:conda安装pymysql后,只有使用conda解释器才可以调用

1.2 Python环境在线安装

1、找到python安装位置,打开终端输入 where python

2、输入cd 进入python位置目录

3、进入Scripts

4、输入pip install pymysql即可

2、写操作流程

    1、建立数据库连接 (db = pymysql.connect(...))
        connect()参数:host(主机地址,本地localhost)、port(端口号,默认3306)
                      user(用户名)、password(密码)、database(数据库)、charaset(编码方式,默认utf8)
    2、创建游标对象 (c = db.cursor())
    3、游标方法   c.execute("insert......")
    4、提交到数据库  db.commit()  将写操作提交到数据库(增删改)
    5、关闭游标对象  c.close()
    6、断开数据库连接   db.close()

3、写操作(插入)案例

3.1 案例1

Python中的sql这个字符串,格式与sql语句保持一致,即可以复制到终端运行

import pymysql

# 连接数据库
db = pymysql.connect(host='localhost',
                     port=3306,
                     user='root',
                     password='1234',
                     database='student',
                     charset='utf8')
# 获取游标(操作数据库,执行sql语句,承载结果)
cur = db.cursor()
# 执行SQL语句
sql = "insert into class (name,age,sex,score) values ('王俊龙',19,'w',67),('李伯俊',19,'m',81);"
cur.execute(sql)
# 提交写操作,可将多次写操作一起提交
db.commit()
cur.close()
db.close()

3.2 案例2

sql语句处理方式1:此种方式需要注意字符串占位符加引号’',目的是保持与sql语句格式完全匹配

sql语句:sql = “insert into class (name,age,sex,score) values (‘王俊龙’,19,‘w’,67),(‘李伯俊’,19,‘m’,81);” 故字符串占位符一定要加 引号sql = “INSERT INTO interest (name,hobby,price,level,comment) VALUES (‘%s’,‘%s’,%f,‘%s’,‘%s’);” % (
name, hobby, price, level, comment)

import pymysql

# 连接数据库
db = pymysql.connect(host='localhost',
                     port=3306,
                     user='root',
                     password='1234',
                     database='student',
                     charset='utf8')
# 获取游标(操作数据库、执行sql语句、承载结果)
cur = db.cursor()
name = input("姓名:")
hobby = input("爱好:")
price = int(input("价格:"))
# 不用强转也可以,sql语句中字符串带'',
# 数字没有,而在下方格式化中,数字直接取代占位符,与sql语句一致;而字符串需要在占位符上加''
level = input("水平:")
comment = input("评语:")
# 注意:下列字符串格式化时一定要与sql语句格式一致,字段对应的值如果是字符串加 ''
# 例如:sql = "insert into class (name,age,sex,score) values ('王俊龙',19,'w',67),('李伯俊',19,'m',81);"
sql = "INSERT INTO interest (name,hobby,price,level,comment) VALUES ('%s','%s',%f,'%s','%s');" % (
    name, hobby, price, level, comment)
try:
    cur.execute(sql)
    db.commit()
except Exception as e:
    db.rollback()
finally:
    cur.close()
    db.close()

3.3 案例3

使用pymysql进行读操作,sql语句处理方式2

执行sql语句时,用参数二列表中的值顺次匹配%ssql = “INSERT INTO interest (name,hobby,price,level,comment) VALUES (%s,%s,%s,%s,%s);”
cur.execute(sql, [name, hobby, price, level, comment])

import pymysql

db = pymysql.connect(host='localhost',
                     port=3306,
                     user='root',
                     password='1234',
                     database='student',
                     charset='utf8')
cur = db.cursor()
name = input("姓名:")
hobby = input("爱好:")
price = input("价格:")
# 不用强转也可以,sql语句中字符串带'',
# 数字没有,而在下方格式化中,数字直接取代占位符,与sql语句一致;而字符串需要在占位符上加''
level = input("水平:")
comment = input("评语:")
sql = "INSERT INTO interest (name,hobby,price,level,comment) VALUES (%s,%s,%s,%s,%s);"
try:
    # 执行sql语句时,会自动查找VALUES后面的值,用参数2列表中的值顺次匹配,会自动适应sql语句格式
    # (不用管列表中值的数据类型,sql字符串中直接%s),
    # 此时sql这个字符串中的%s不用加''
    cur.execute(sql, [name, hobby, price, level, comment])
    db.commit()
except Exception as e:
    db.rollback()
finally:
    cur.close()
    db.close()

**注意:**写操作除上述的插入操作,还有删除、修改操作,过程与案例1、2相似,更换sql语句就可以,案例3情况,只能传递某些字段的值或参量,字段名与表名不可以传递

4、读操作流程

import pymysql

# 连接数据库
db = pymysql.connect(host='localhost',
                     port=3306,
                     user='root',
                     password='1234',
                     database='student',
                     charset='utf8')
# 创建游标对象
cur = db.cursor()
sql = "select * from interest"
# 执行sql语句
cur.execute(sql)
# 打印读取的内容
print(cur.fetchone())     # 返回值是一个元组
print(cur.fetchmany(3))   # 游标输出内容,等待下次输出时会接着上次游标所在位置读取(该语句输出三条记录)
print(cur.fetchall())     # 单独使用,输出所有的记录;但此时会在上述游标操作后的位置输出所有记录(返回值为元组,里面每一条记录也是元组)
cur.close()
db.close()
"""
# (1, 'Tom', 'sing,dance', Decimal('16800.00'), 'B', '表现不错,进步好快')
# ((2, 'kevin', 'draw', Decimal('18800.00'), 'A', '基础扎实,画风突出'), (3, 'lily', 'sing,draw', Decimal('13499.00'), 'C', '进步空间巨大'), (5, 'Mary', 'sing', Decimal('13900.00'), 'B', '未来可期'))
# ((6, 'Jim', 'sing,dance', Decimal('16900.00'), 'C', '再接再厉'),)
"""

总结 

到此这篇关于pymysql安装及操作的文章就介绍到这了,更多相关pymysql安装及操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python使用PyAudio制作录音工具的实现代码

    Python使用PyAudio制作录音工具的实现代码

    这篇文章主要介绍了Python使用PyAudio制作录音工具,音频录制与视频录制相似,也是以数据帧的方式录制保存,这次使用强大的第三方包PyAudio和内置的wave模块编写,需要的朋友可以参考下
    2022-04-04
  • Python pygame派生精灵和精灵组创建敌机

    Python pygame派生精灵和精灵组创建敌机

    这篇文章主要为大家介绍了Python pygame派生精灵和精灵组创建敌机示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • 基于PyQt5制作一个动态指针时钟

    基于PyQt5制作一个动态指针时钟

    这篇文章主要和大家分享如何利用Python中的PyQt5制作一个动态指针时钟来显示实时时间,文中的示例代码讲解详细,需要的可以参考一下
    2022-02-02
  • 使用python的pexpect模块,实现远程免密登录的示例

    使用python的pexpect模块,实现远程免密登录的示例

    今天小编就为大家分享一篇使用python的pexpect模块,实现远程免密登录的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • Python抓包并解析json爬虫的完整实例代码

    Python抓包并解析json爬虫的完整实例代码

    这篇文章主要给大家介绍了关于Python抓包并解析json爬虫的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 关于matplotlib-legend 位置属性 loc 使用说明

    关于matplotlib-legend 位置属性 loc 使用说明

    这篇文章主要介绍了关于matplotlib-legend 位置属性 loc 使用说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • 把csv文件转化为数组及数组的切片方法

    把csv文件转化为数组及数组的切片方法

    今天小编就为大家分享一篇把csv文件转化为数组及数组的切片方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Python获取二维矩阵每列最大值的方法

    Python获取二维矩阵每列最大值的方法

    下面小编就为大家分享一篇Python获取二维矩阵每列最大值的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python详解文字转语音的实现

    Python详解文字转语音的实现

    在自然语言处理上,文字、音频互转是一个很关键的技术点。对于语音转文字,个人实现较为困难,我们可以使用语音转文字的软件或借助各API(如科大讯飞等)进行移植开发。不过文字转语音就相对而言容易实现很多了
    2022-02-02
  • 基于tkinter中ttk控件的width-height设置方式

    基于tkinter中ttk控件的width-height设置方式

    这篇文章主要介绍了基于tkinter中ttk控件的width-height设置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05

最新评论