Python教程之使用pymysql操作Mysql数据库-张柏沛IT博客

正文内容

Python教程之使用pymysql操作Mysql数据库

栏目:Python 发布时间:2019-10-30 19:27 浏览量:904

 

本文主要介绍如何使用Python的pymysql模块操作数据库,包括数据库的增删改查;但是mysql语句等mysql基础内容则不在本节讲解范围

如果没有mysql基础的朋友可以先到"学习栏目"的"Mysql"栏目学习mysql语句基础之后再看本节内容:

Mysql基础教程(一) Mysql数据库概述和简单命令

 

首先在命令行通过 pip 安装 pymysql

pip install pymysql

 

然后就可以正式使用pymysql模块操作数据库,以下是操作步骤

import pymysql

 

# 1.连接数据库

conn = pymysql.connect(host="127.0.0.1",user="root",password="xxxx",database="xxxx",charset="utf8)

#或者可以使用字典形式传参更方便

db_conf = {
     "host":"127.0.0.1",
     "user":"root",
     "password":"573234044",
     "database":"test",
     "charset":"utf8",
     #这里要说一下,下面这句意思是查到的数据要以字典形式返回,即关联数组;否则默认返回索引数组,是元组里面包着元组
     "cursorclass":pymysql.cursors.DictCursor
 }
 conn = pymysql.connect(**db_conf)

 

# 2.创建光标对象
 

cursor=conn.cursor()

#如果在db_conf中没有定义 "cursorclass":pymysql.cursors.DictCursor 那么就要这样

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

#数据库的增删改查都要通过光标cursor来操作的

 

#3.执行sql语句

#增

sql="insert into books values (%s,%s)"          # 这里写成这样其实相当于占位符,防止sql注入攻击
cursor.execute(sql,[None,"书籍1"])                #执行


#批量增
 

sql="insert into books values (%s,%s)"
# 参数格式是列表里面放着元组
data=[
    (None,"b1"),
    (None,"b2"),
    (None,"b3")
]
cursor.executemany(sql,data)



#获取最后的id,下面两种都行
lastid=cursor.lastrowid
lastid=db.insert_id()

#这里有个bug,如果插入一条数据那么lastid是正确的,但是如果插入多条,比如我上面插入3条,lastid应该是3,但他返回的lastid是1。这里要注意。

 

# PS execute方法无论增删改查返回的都是影响条数

 

# 删

sql="delete from books where id in (%s,%s)"
res=cursor.execute(sql,[1,3])

# 改同上 略

 

#查询

sql = "select * from books"

# 执行
res=cursor.execute(sql)  #res返回查到的条数

#获取结果集
data = cursor.fetchall()  #返回列表包着字典

for d in data:
    print(d['id'],d['name'])

 

# 查单条和多条

sql = "select * from books"

#执行
res=cursor.execute(sql)

#获取一条
data1 = cursor.fetchone()  #返回字典

#获取3条
data2 = cursor.fetchmany(3)  #返回列表包着字典 

#但是这里要注意,假如他res有25条,fetchone拿到了id为1的数据,data2拿到了id为2,3,4的数据,把1给跳过了。这是因为获取数据时光标会移动。

#如果想将光标移动回这25条的数据集的开头可以这样
cursor.scroll(0,"absolute") 表示光标移动到所查询到的数据集的开头 
cursor.scroll(-1,"relative") 光标往前移动1个
cursor.scroll(1,"relative") 光标往后移动1个
#默认是relative

 

# 4.最后一步

#关闭光标和连接符
 

cursor.close()
conn.close()

 

如果您需要转载,可以点击下方按钮可以进行复制粘贴;本站博客文章为原创,请转载时注明以下信息

张柏沛IT技术博客 > Python教程之使用pymysql操作Mysql数据库

热门推荐
推荐新闻