python向MySQL数据库插入数据的操作方法

我在这里用的是python中pymysql连接MySQL数据库,如果电脑中没有安装pymysql,可以直接再命令行通过 pip install pymysql 安装

一、通过python脚本向mysql数据库插入单条数据

写sql语句时,不管字段为什么类型,占位符统一使用%s
这里记录两种插入单条数据的方式:
1、直接用execute方法执行sql语句

#导入pymysql包
import pymysql
# 创建数据库连接
conn = pymysql.connect(host="localhost",port=3306,user="root",passwd="123456",db="test1" )
#获取一个游标对象
cursor=conn.cursor()
#执行数据库插入操作
cursor.execute('insert into student(id,name,age) values (123456,"tom",12)')
#提交
conn.commit()
#关闭连接
conn.close()
cursor.close()

2、将sql语句单独出来,在语句中用%s做占位符

#导入pymysql包
import pymysql
# 创建数据库连接
conn = pymysql.connect(host="localhost",port=3306,user="root",passwd="123456",db="test1" )
#获取一个游标对象
cursor=conn.cursor()
#sql语句中,用%s做占位符,参数用一个元组
sql="insert into student values(%s,%s,%s)"
param=(23456,'lilei',20)
#执行数据库插入
cursor.execute(sql,param)
#提交
conn.commit()
#关闭连接
conn.close()
cursor.close()

二、通过python脚本向mysql数据库批量插入数据

这里记录两种批量插入数据的方式:
1、通过execute,用for语句循环

#导入pymysql包
import pymysql
# 创建数据库连接
conn = pymysql.connect(host="localhost",port=3306,user="root",passwd="123456",db="test1" )
#获取一个游标对象
cursor=conn.cursor()
#设置参数i,for语句循环
for i in range(1,10):
 param=str(i)
 sql="insert into student values(%s,'yy',20)"
 cursor.execute(sql,param)
 conn.commit()
#关闭连接
conn.close()
cursor.close()

2、通过executemany,数据的格式必须为list[tuple(),tuple(),tuple()]或者tuple(tuple(),tuple(),tuple())

import pymysql
# 打开数据库连接
conn = pymysql.connect(host="localhost",port=3306,user="root",passwd="123456",db="test1" )
# 使用cursor()方法获取操作游标
cursor = conn.cursor()
#批量插入数据
sql="insert into student values(%s,%s,%s)"
#每一个值都作为一个元组,整个参数集作为一个元组
param=((111111,'haha',13),(22222,'hehe',34))
#或者每一个值作为元组,整个参数集作为list :param=[(111111,'haha',13),(22222,'hehe',34)]
#使用executemany方法批量插入数据
cursor.executemany(sql,param)
#提交
conn.commit()
#关闭
conn.close()
cursor.close()

三、cursor执行命令的方法

1、 callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
2、 execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
3、executemany(self, query, args):执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
4、nextset(self):移动到下一个结果集

四、cursor接受返回值的方法

1、 fetchall(self):接收全部的返回结果行.
2、 fetchmany(self, size=None):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.
3、 fetchone(self):返回一条结果行.
4、 scroll(self, value, mode=‘relative’):移动指针到某一行.如果mode=‘relative’,则表示从当前所在行移动value条,如果mode=‘absolute’,则表示从结果集的第一 行移动value条.

五、cursor执行查询语句并返回结果

#执行查询的操作
 cursor.execute("select * from cdinfo")
#用fetcall方法获取查询返回的全部结果,将结果保存到tup,每条结果都是元组类型,所有的元组组成了一个元组集
 tup=cursor.fetchall()
 print(tup)#输出整个结果 
 print tup[0][3]#输出元组集中,第一个元组的第四个元素
作者:测试运维小猴子原文地址:https://blog.csdn.net/HBT036017/article/details/104930595

%s 个评论

要回复文章请先登录注册