1. pymysql模块

pymysql模块用于对数据库进行操作,在使用此模块之前,首先主机上安装数据库并做好安全初始化:

pymysql 封装mysql库 pymysql模块_pymysql 封装mysql库


pymysql 封装mysql库 pymysql模块_数据库_02

输入密码,可以成功进入数据库:

pymysql 封装mysql库 pymysql模块_sql_03

2. pymysql模块的使用

  1. 创建表
import pymysql
# 1.连接数据库
# 在创建连接的过程中需要输入以下信息:
#	其中需要注意的是:所进入库"python"必须是存在的,若不存在,则首先创建python库
conn = pymysql.connect(host='localhost',
                       user='root',
                       password='redhat',
                       db='test',
                       # 设置编码方式为utf-8
                       charset='utf8'
)

# 2.创建游标对象
cur = conn.cursor()

# 3.对数据库操作
########创建数据表#############
try:
	# sql语句
    create_sqlt = 'create table user (id int,name varchar(10));'
    cur.execute(create_sqlt)
except Exception as e:
    print('创建表失败:', e)
# 若try执行成功,则执行else; 若执行了except部分,则不会执行else
else:
    print('创建表成功.')

输出结果:

pymysql 封装mysql库 pymysql模块_数据_04


进入数据库中查看,user表创建成功:

pymysql 封装mysql库 pymysql模块_数据库_05

2. 插入单条数据

conn = pymysql.connect(host='localhost',
                       user='root',
                       password='redhat',
                       db='python',
                       charset='utf8',
                       # 自动提交,此参数确定后,不需要再使用conn.commit()进行提交
                       # autocommit='True'
)

try:
    # 定义sql语句
    insert_sql = "insert into user(id,name) values(0,'root');"
    # 执行sql语句
    cur.execute(insert_sql)
except Exception as e:
    print('插入数据失败:', e)
else:
    # 提交python语句,若不提交,则实际表中不会插入数据
    conn.commit()
    print('插入数据成功')
    # 若不提交,则也会输出此语句,但是表中不存在数据

输出结果:

pymysql 封装mysql库 pymysql模块_数据_06


查看数据库:

pymysql 封装mysql库 pymysql模块_sql_07


3. 插入多条数据

 1). 第一种方式

conn = pymysql.connect(host='localhost',
                       user='root',
                       password='redhat',
                       db='python',
                       charset='utf8',
                       # 自动提交,此参数确定后,不需要再使用conn.commit()进行提交
                       autocommit='True'
)

try:
    # 元组
    info = [(i, i) for i in range(10, 15)]
    # 第一种方式
    insert_sql = "insert into user values(%d, '%s');"
    for item in info:
        print('insert 语句:', insert_sql %item)
        cur.execute(insert_sql %item)
except Exception as e:
    print('插入多条数据失败:', e)
else:
    print('插入多条数据成功')

输出结果:

pymysql 封装mysql库 pymysql模块_数据库_08


数据库内容:

pymysql 封装mysql库 pymysql模块_pymysql 封装mysql库_09


 2). 第二种方式

try:
    # 元组
    info = [(i, i) for i in range(16, 20)]
    # 第二种方式
    insert_sql = "insert into user values('%s', '%s');"
    cur.executemany(insert_sql,info)
except Exception as e:
    print('插入多条数据失败:', e)
else:
    print('插入多条数据成功')

执行结果:

pymysql 封装mysql库 pymysql模块_数据库_10


数据库内容:

pymysql 封装mysql库 pymysql模块_数据库_11

4. 查询数据

select_sql = "select name from user where id = '10' "
select_sql = "select * from user"
# 默认不返回查询结果集,返回的是数据记录数
res = cur.execute(select_sql)
print(res)

输出结果:共查询了10条数据

pymysql 封装mysql库 pymysql模块_pymysql 封装mysql库_12

select_sql = "select name from user where id = '10' "
select_sql = "select * from user"
# 默认不返回查询结果集,返回的是数据记录数
res = cur.execute(select_sql)
# cur.fetchone()获取查询结果集,从最开头开始,获取一条
# 返回一个元组
a = cur.fetchone()
print(a)

输出结果:

pymysql 封装mysql库 pymysql模块_数据_13

select_sql = "select name from user where id = '10' "
select_sql = "select * from user"
# 默认不返回查询结果集,返回的是数据记录数
res = cur.execute(select_sql)
a = cur.fetchone()
print(a)
# fetchone后,指针向后移动,获取下一条查询结果集
print(cur.fetchone())
print(cur.fetchone())
# 查询下面3条结果
print(cur.fetchmany(3))

输出如下:

pymysql 封装mysql库 pymysql模块_数据库_14


5. 修改数据

try:
	# 将id=19的用户名字修改为'test'
    update_sql = "update user set name='test' where id='19';"
    cur.execute(update_sql)
except Exception as e:
    print('修改数据失败:', e)
else:
    print('修改数据成功')

输出结果:

pymysql 封装mysql库 pymysql模块_sql_15


数据库信息修改如下:

pymysql 封装mysql库 pymysql模块_pymysql 封装mysql库_16