文章目录
在Python中操作MySQL数据库时,我们使用较多的库是 PyMySQL ,如果你选择使用 PyMySQL库 ,那么首先需要通过pip安装它。pip install pymysql命令就是用来安装PyMySQL的。
安装PyMySQL
-
1.打开你的命令行工具(如cmd、PowerShell、Terminal等)。
-
2.输入以下命令来安装PyMySQL:
bashpip install pymysql
如果你使用的是Python 3(这是大多数现代系统上的默认情况),并且系统中同时安装了Python 2,你可能需要使用pip3而不是pip:
bashpip3 install pymysql
使用PyMySQL操作MySQL
- 注意 :这里我们的MySQL环境是装在虚拟机中的 ,连接的也是虚拟机中的MySQl环境,因此需要在操作之前打开我们的虚拟机
- 直接上代码,在代码中进行讲解
python
import pymysql
# 1、创建连接
# 需要传入一些参数:
# host --> 所在的主机名或者是域名或者是ip地址
# port --> 运行的端口号 --> 可以在虚拟机中进行查看指令如下(一般端口号都为3306)
# ps -aux | grep mysql 找到MySQL运行的进程号
# netstat -tnlp | grep mysql 的进程号 找到MySQL的端口
# user --> 用户名
# passwd --> 密码
# db --> 指定要操作的数据库
# 例如:
# 连接的变量名自定义
conn = pymysql.connect(host='master', port=3306, user='root', passwd='123456',db='Test')
# 2、创建游标cursor,游标名称自定义 --> 用来执行后面的命令
cur = conn.cursor()
# cur.execute("use stu_test") # 切换数据库
# 3、准备好你要执行的SQL语句,一般用变量接收
selerc_sql = 'select * from Test.Student'
# 4、用游标中的execute方法执行sql语句
cur.execute(selerc_sql)
# 5、如果有返回值 可以通过游标中的一些方法进行获取
print(cur.fetchone()) # 获取一条数据
print(cur.fetchall()) # 获取所有数据
print(cur.fetchmany(5)) # 获取指定大小的数据数据
# 6、关闭游标,关闭连接
cur.close()
conn.close()
- 创建表并导入数据
python
import pymysql
if __name__ == '__main__':
# 连接数据库
conn = pymysql.connect(host='192.168.147.100',user='root',password='123456',port=3306,db='Test')
# 建立游标
cursor = conn.cursor()
# 创建一个表名为'aa'的表
create_sql = 'create table aa (id int,name varchar(255))'
# 用游标执行sql语句
cursor.execute(create_sql)
# 插入数据
insert_sql = 'insert into aa values(1,"zxs")'
# 用游标执行插入语句
cursor.execute(insert_sql)
# 执行执行插入语句时 需要提交事务 注意这里的方法是在连接数据库时,定义的变量中
conn.commit()
# 关闭游标、关闭连接
cursor.close()
conn.close()
注意:当我们写完代码,执行成功后,只能看到执行成功的提示,并看不到具体的表和数据,需要在虚拟机中进行查看,或者是在与虚拟机连接后的Navicat中进行查看。
- 插入数据---外界传入数据、传入多条数据
python
import pymysql
if __name__ == '__main__':
conn = pymysql.connect(host='192.168.147.100',user='root',password='123456',port=3306,db='Test')
cursor = conn.cursor()
# 外界传入数据
name_a = 'cyy'
insert_sql = f'insert into aa values(0,"{name_a}")'
cursor.execute(insert_sql)
# 提交事务
conn.commit()
###########################################################
# 写入多条数据
name_list = [('cyy1'), ('zc1'), ('cyy2')]
# 这里第一个参数可以写 0 或者 null 是因为在创建表的时候将第一列设置成了自增列,若不是自增列还需自己给一个值
# 因此传入数据时需要根据你表的结构传入
# 所有的值接受都是%s, 还不需要引号
insert_sql = 'insert into aa values(0,%s)'
# 用 executemany 方法执行
cursor.executemany(insert_sql, name_list)
# 提交事务的过程可能会有数据插入不成功的时候,可以使用try Exception 的方法回滚事务
try:
conn.commit()
except Exception as e:
# 回滚事务
conn.rollback()
#################################################################
# 表中有多列时,需传入多个数据也是一样的做法,有多少个数据,就写几个%s,一一对应即可
# 这里'bb'表中有 id name age 这三列 且id列为自增列
name_list = [('cyy1', 23), ('zc1', 21), ('cyy2', 1)]
insert_sql = 'insert into bb values(0,%s,%s)'
cursor.executemany(insert_sql, name_list)
try:
conn.commit()
except Exception as e:
# 回滚事务
conn.rollback()
##############################################################
cursor.close()
conn.close()