【编程实践】详解 MySQL 在 Python 中的使用(2)-pymysql的使用

举报
迷彩 发表于 2023/06/02 17:05:10 2023/06/02
【摘要】 前言我们在上一篇文章《【编程实践】详解 MySQL 在 Python 中的使用(1)》中,介绍了mysql的相关知识以及基本操作,本文我们进入正题,接着介绍MySQL在Python中的基本操作MySQL安装由于大家大都使用的是windows系统,所以这里仅介绍关于MySQL在windows系统上的安装,需要了解MySQL在Linux系统的安装可以参考《【值得收藏】Centos7 安装 mys...

前言

我们在上一篇文章《【编程实践】详解 MySQL 在 Python 中的使用(1)》中,介绍了mysql的相关知识以及基本操作,本文我们进入正题,接着介绍MySQL在Python中的基本操作


MySQL安装

由于大家大都使用的是windows系统,所以这里仅介绍关于MySQL在windows系统上的安装,需要了解MySQL在Linux系统的安装可以参考《【值得收藏】Centos7 安装 mysql 完整操作命令

下载MySQL

下载地址:https://dev.mysql.com/downloads/windows/installer/

根据自己的windows版本,选择下载合适的版本


推荐选择下载离线安装包,点击download按钮跳转到下图页面,然后接着选择不登录下载


然后双击下载好的进行安装

勾选同意,然后点击next,进入下一步


进入类型选择页面,需要安装mysql云服务就选择了developer default,如果只想安装mysql server的就选择custom模式,这里选择custom模式,进入选择页面

  • developer default(开发者默认):安装mysql开发所需的所有产品

  • server only(服务器):只安装mysql服务器产品

  • client only(客户端):只安装没有服务器的mysql客户端产品

  • full(完全):安装所有包含的mysql产品和功能

  • custom(手动):手动选择系统上应安装的产品


然后接着一直next即可,直到安装完成,在这个过程中需要设置root密码,设置完成后一定要记住,后面会用到

安装过程中到了这个页面,记得勾选,并设置MySQL的服务名称。把mysql加入系统服务,这样才能开机自启


安装完成后需要检测root密码,才能进行后续操作

安装完成后,将MySQL配置到环境变量

下图中D:\wamp\bin\mysql\mysql5.6.17是我的安装路径,你需要找到你的mysql安装路径,然后

我的电脑右键-》属性-》高级系统设置-》环境变量-》新建MYSQL_HOME,将安装目录输入:




接着找到系统环境变量中的path编辑:输入%MYSQL_HOME%\bin

然后点确定保存,这样就完成了MySQL的安装及简单配置,你可以安装Navicat来可视化管理和操作你的MySQL


PyMysql的使用

PyMySQL是在Python 3.x中用于连接MySQL服务器的一- 个库,可使用pip install进行安装。安装命令如下:

pip install PyMySQL
或
pip3 install PyMySQL



PyMySQL基本使用流程如下:

(1)创建连接:使用connect( )创建连接并获取Connection对象。

(2)交互操作:获取Connection对 象的Cursor对象,然后使用Cursor对象的各种方法与数据库进行交互。

(3)关闭连接:在进行数据库连接时,需要传入许多参数,连接数据库常用的参数如下:

host:数据库服务器地址,默认为localhost

user:数据库用户名,默认为当前程序运行用户

password:登录密码,默认为空字符串

database:操作的数据库

port:数据库端口,默认3306

bind_address:当客户端有多个网络接口时,指定连接到主机的接口,参数可以是主机名或IP地址

unix_socket:unix套接字地址,区别于host

read_timeout:读取数据超时时间,单位秒,默认无限制

write_timeout:写入数据超时时间,单位秒,默认无限制

charset:数据库编码

sql_mode:指定默认的SQL_MODE

cursorclass:设置默认的游标类型


编程实践

mysql最常用的操作就是增、删、改、查,也是就大家口中的CURD,不管是任何项目,只要使用了数据库基本围绕这些操作来编写业务,下面我们使用pymysql模块来浅尝一下MySQL在Python中的相关操作

程序流程如下:

  1. 使用import导入PyMysql模块,再使用PyMysql中的函数进行数据库的连接

  2. 使用在MySQL中创建数据库

  3. 使用insert()方法在表中插入一个新的记录,当在数据库中插入多行数据时,则使用insert_many()方法对其进行处理,将单对象处理转换为多对象处理,以此完成批量插入数据

  4. 对创建的数据库与表进行增,删,改,查的操作

  5. 对相关操作输出相应的结果


代码实现

1.导入pymysql创建数据库连接

import pymysql
#获取对象,导入数据库
def get_conn():
    conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='123456', db='demo')
    return conn

demo数据库中有一个student表,表的结构和数据如下图:


2.连接数据库,定义插入方法,实现插入一条数据

def insert(sql):
    conn = get_conn()
    cur = conn.cursor()
    result = cur.execute(sql)
    print(result)
    conn.commit()
    cur.close()
    conn.close()
    
if __name__ == '__main__':
    sql = 'INSERT INTO student (name, age, grade) VALUES(\'李白\',12, 100);'
    insert(sql)

执行结果:

插入一条数据返回插入成功条数1



3.定义批量插入数据的方法:insert_many()

def insert_many(sql, args):
    conn = get_conn()
    cur = conn.cursor()
    result = cur.executemany(query=sql, args=args)
    print(result)
    conn.commit()
    cur.close()
    conn.close()
    
if __name__ == '__main__':
    sql = 'insert into student (name, age, grade) VALUES (%s,%s,%s);'
    args = [( '鲁班', 11, 88), ('赵云', 12, 89), ('曹操', 13, 99)]
    insert_many(sql=sql, args=args)

执行结果:成功插入3条数据,返回3


4.修改表中数据,定义update()方法

def update(sql,args):
    conn = get_conn()
    cur = conn.cursor()
    result = cur.execute(sql, args)
    print(result)
    conn.commit()
    cur.close()
    conn.close()


if __name__ == '__main__':
    sql = 'UPDATE student SET NAME=%s WHERE id = %s;'
    args = ('李白', 2)
    update(sql, args)

将原来的名字改为李白

5.删除表中数据,定义delete()方法

def delete(sql,args):
    conn = get_conn()
    cur = conn.cursor()
    result = cur.execute(sql, args)
    print(result)
    conn.commit()
    cur.close()
    conn.close()


if __name__ == '__main__':
    sql = 'DELETE FROM student WHERE id = %s;'
    args = (2,)
    delete(sql, args)

删除id=2的数据:


6.定义query()方法查询表中的数据

def query(sql,args):
    conn = get_conn()
    cur = conn.cursor()
    cur.execute(sql,args)
    results = cur.fetchall()
    print(type(results))

    for row in results:
        print(row)
        id = row[0]
        name = row[1]
        age = row[2]
        print('id: ' + str(id) + '  name: ' + name + '  age: ' + str(age))
        pass

    conn.commit()
    cur.close()
    conn.close()


if __name__ == '__main__':
    sql = 'SELECT  * FROM student;'
    query(sql, None)

执行结果如下:

使用PyMySQL实现MySQL的增删改查就是这么简单,赶紧动手实践起来吧!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。