用python在MySQL中写入数据和添加数据

您所在的位置:网站首页 python读取数据库表 用python在MySQL中写入数据和添加数据

用python在MySQL中写入数据和添加数据

2023-07-13 19:06| 来源: 网络整理| 查看: 265

在笔者之前的博文中,已介绍了用python连接与mysql数据库的知识。包括如何安装python连接mysql的pymysql包,如何通过cusor语句将python与mysql连接起来,以及如何用python查询数据库等等。 传送门:用python连接与查询mysql数据库

今天,再来说说如何用python写入数据和添加数据到mysql。

一、用python将数据写入mysql

例子:现有一个格式为dataframe的数据集data,内含“编号”“商品名称”“售价”这三个变量名,共3条数据,如图所示: 读取的excel数据 输入下列代码即可写入mysql中,该数据集成为名为price的表,被放在aaa库中。这段代码的思想是创建一个引擎(engine),内含MySQL的主机名、端口、用户名、密码和库名等信息。它相当于一把钥匙,有了这些信息就能顺利找到MySQL中的指定库。然后通过to_sql将数据集直接写入MySQL指定库中。 格式如下: 1、engine= create_engine(“mysql+pymysql:/用户名:密码@主机名:端口/待写入的数据库名字?设置文本防乱码格式”) 2、dataframe.to_sql(name=“设置的表名”,con=engine,if_exists=‘replace’,index=False,index_label=False)

from sqlalchemy import create_engine engine = create_engine("mysql+pymysql://root:123@localhost:3306/aaa?charset=utf8mb4") data.to_sql(name="price",con=engine,if_exists='replace',index=False,index_label=False)

现在验证数据是否已成功写入MySQL中,查询结果如下: mysql查询结果 如图所示,数据已成功写入aaa库中。

二、用python添加数据到mysql 2.1 手动插入少量数据

与用python查询数据库一样,依然是通过游标(cusor)来实现添加数据。cursor.executemany可以添加1条或多条数据。 需要注意的是,"insert into aaa values(%s,%s,%s)"中不管数据是什么类型,统一使用%s作为占位符。 在写入sql的关于水果售价的表中继续添加几行数据:

#手动插入少量数据 import pymysql.cursors connection=pymysql.connect(host='localhost',port=3306,user='root',password='123',db='huanghe',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor) #通过cursor创建游标 cursor = connection.cursor() #插入数据 cursor.executemany( "insert into aaa values(%s,%s,%s)", [ (4,'orange',8), (5,'lemon',5), (6,'strawberry',15) ] ) connection.commit()

添加数据后的mysql表如下: 手动插入结果

2.2 批量插入大量数据

上一种插入方法需要一个个手动输入数据,遇到大一点的数据量会马上扑街…这里提出一种批量插入大量数据的方法,但要在python中需要将这些数据存为dataframe格式,然后再添加到mysql表中。 继续在关于水果售价的表中添加更多的数据: 1、在python中将新的数据data1存为dataframe: 在这里插入图片描述 2、只要一行代码就能添加至mysql:

data1.to_sql(name="price",con=engine,if_exists='append',index=False,index_label=False)

to_sql既可以写入数据,也可以添加数据,参数“if_exists”=‘append’时可直接在原表的后面添加数据。

to_sql其他的参数说明: name: 输出的表名 con: 与read_sql中相同,数据库链接 if_exits: 三种模式:fail,若表存在,则不输出;replace:若表存在,覆盖原来表里的数据;append:若表存在,将数据写到原表的后面。默认为fail。 index:是否将df的index单独写到一列中 index_label:指定列作为df的index输出,此时index为True

总结

to_sql是用python操作mysql的重要函数,批量导入增加数据比较方便。如果数据的格式比较常见,批量插入数据就用dataframe.to_sql()吧。而executemany适合手动插入少量数据,以及数据量较大的数据集格式不方便转为dataframe格式时,通过写循环插入数据。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3