自学Python第二十八天 - PyMySql库,操作MYSQL数据库

PyMySql 是 python 操作 MYSQL 数据库最常用的库。对于 MYSQL 的安装使用不在这里记录,只学习 python 部分。

一、pymysql 的安装

直接使用 pip 进行安装

pip install pymysql

二、连接到数据库

导入 pymysql 包后,使用 pymsql.connect() 函数创建数据库对象。pymsql.connect() 的常用参数有:

参数 说明
dsn 数据源名称,给出该参数表示数据库依赖
host=None 数据库连接地址
user=None 数据库用户名
password=‘’ 数据库用户密码
database=None 要连接的数据库名称
port=3306 端口号,默认为3306
charset=‘’ 要连接的数据库的字符编码(可以在终端登陆mysql后使用 \s 查看,如下图)
connect_timeout=10 连接数据库的超时时间,默认为10
port=3306 端口号,默认为3306
db=“tot” 操作的数据库
autocommit=True 自动提交事务
cursorclass=pymysql.cursors.DictCursor 设置返回值为字典,默认返回元组,多个数据则存放在列表中

数据库对象创建示例:

import pymysql

db = pymysql.connect(
    host="localhost", 
    port=3306,
    user='root',    #在这里输入用户名
    password='888888',     #在这里输入密码
    charset='utf8mb4' 
) #连接数据库

三、数据库对象的操作

一般使用数据库对象的相应方法进行游标操作、提交事务、回滚事务和关闭数据库连接

方法名 说明
cursor() 获取游标对象,操作数据库,如执行DML操作,调用存储过程等
commit() 提交事务
rollback() 回滚事务
close() 关闭数据库的连接
cursor = db.cursor()	# 创建游标对象
db.commit()		# 手动提交事务
db.rollback()	# 进行回滚操作
db.close()		# 关闭数据库连接

pymysql通过游标对象进行数据库操作,需注意的是pymysql默认autocommit=False,即不自动提交事务。
在通常的查询中不提交事务也可以获取结果,但是可能会出现返回旧数据的查询结果,所以需要设置为自动提交事务或手动提交。

四、游标操作

pymysql 通过游标来进行数据库操作,游标对象的常用方法有:

方法名 说明
callproc(procname,[,parameters]) 调用存储过程,需要数据库支持
close() 关闭当前游标
execute(operation,[,parameters]) 执行数据库操作,sql语句或者数据库命令
executemany(operation, seq_of_params) 用于批量操作
fetchone() 获取查询结果集合中的下一条记录
fetchmany(size) 获取指定数量的记录
fetchall() 获取查询结果集合所有记录
nextset() 跳至下一个可用的数据集
arraysize 指定使用fetchmany()获取的行数,默认为1
setinputsizes(size) 设置调用execute*()方法时分配的内存区域大小
setoutputsizes(size) 设置列缓冲区大小,对大数据列尤其有用

需注意的是,获取查询结果时是对游标进行操作,例如使用 fetchone() 方法后获取一条结果记录,再次使用则获取下一条,如果更换为 fetchall() 方法,已经获取的记录也不再重复获取。

cursor.execute('show databases;')		# 执行sql语句

one = cursor.fetchone()  #获取一条数据
print('one:',one)

many = cursor.fetchmany(3) #获取指定条数的数据,不写默认为1
print('many:',many)

all = cursor.fetchall() #获取全部数据
print('all:',all)

五、完整实例

import pymysql

db = pymysql.connect(
    host="localhost", 
    port=3306,
    user='root',    #在这里输入用户名
    password='888888',     #在这里输入密码
    charset='utf8mb4',
    database='justtest'     #指定操作的数据库
    )

cursor = db.cursor() #创建游标对象

try:

    tableName = 'user'
    sql = 'create table  %s (id varchar(20) not null, name varchar(20) not null, primary key(id))'%(tableName) 
    cursor.execute(sql)     #执行sql语句,创建表

    sql = 'show tables'
    cursor.execute(sql)
    print('显示创建的表:',cursor.fetchall())  #显示创建的表


    sql = 'desc %s'%(tableName) 
    cursor.execute(sql)
    print('显示表结构:',cursor.fetchall())  #显示表结构

except Exception as e:
    print(e)
    db.rollback()  #回滚事务

finally:
    cursor.close() 
    db.close()  #关闭数据库连接

猜你喜欢

转载自blog.csdn.net/runsong911/article/details/131257600