赞
踩
一、数据库分类
关系型数据库:采用了关系模型来组织数据的数据库,如MySQL、PostgreSQL、Oracle数据库。
非关系型数据库:以键值对存储,且结构不固定,可以减少一些时间和空间的开销,如MongoDB、Redis。
二、Python操作MySQL环境安装
1、Docker部署MySQL:
1)创建数据库目录(略)
mkdir -p /opt/mysql/data
2)创建并运行MySQL容器
# -d 守护进程后台运行
# -v 目录映射——挂载;作用是为了持久化
# -e 环境变量
# root用户密码设置为hl
# -p 映射端口 端口默认3306
# root账号的密码为hl
docker run -d --name mysql -v /opt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=hl -p 3306:3306 registry.cn-hangzhou.aliyuncs.com/sqqdcl/waimai-db
如果你想学习接口自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的接口自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386
2、安装pymysql库
#python访问MySQL,需要安装pymysql库
pip install pymysql
3、Navicat配置连接数据库
三、Python操作MySQL
Python操作数据库的过程:创建连接->获取游标->执行命令->关闭游标->关闭连接
1、创建连接,连接数据库的参数按照实际情况添加
- import pymysql
-
- #定义一个函数,用来创建连接数据库
- def mysql_db():
- con = pymysql.connect(
- host='192.168.223.130',
- port=3306,
- database='mysql',
- charset='utf8',
- user='root',
- password='hl'
- )
-
- if __name__ == '__main__':
- mysql_db()
2、获取游标,执行Sql,查询操作
-
- import pymysql
-
- #定义一个函数,用来操作数据库
- def mysql_db():
- con = pymysql.connect(
- host='192.168.223.130',
- port=3306,
- database='mysql',
- charset='utf8',
- user='root',
- password='hl'
- )
- try:
- with con.cursor() as cursor:
- #一、查询
- sql = "select * from tables_priv;"
- #执行SQL语句
- #执行后的结果都保存在cursor中
- cursor.execute(sql)
-
- #1-从cursor中获取全部数据用fetchall
- # datas = cursor.fetchall()
- # print("获取的数据:\n",datas)
-
- #2-从cursor中获取一条数据用fetchall
- # data = cursor.fetchone()
- # print("获取的数据:\n",data)
-
- #3-想要从cursor中获取几条数据用fetchmany
- datas = cursor.fetchmany(3)
- print("获取的数据:\n",datas)
- except Exception as e:
- print("数据库异常:\n",e)
- finally:
- #不管成功还是失败,都要关闭数据库连接
- con.close()
-
- if __name__ == '__main__':
- mysql_db()

2.1、fetchall:获取当前SQL语句能查出来的全部数据,元组套元组;
2.2、fetchone:每次获取一条数据。但是获取到这条数据后,指针会往后移一行数据,返回一个元组;
2.3、fetchmany:直接告诉它想要多少条数据。
3、插入数据操作
3.1、插入一条数据
说明:除了查询,其他操作都需要commit;commit对应rollback,回滚到上次提交的地方。
- import pymysql
-
- #定义一个函数,用来操作数据库
- def mysql_db():
- con = pymysql.connect(
- host='192.168.223.130',
- port=3306,
- database='mysql',
- charset='utf8',
- user='root',
- password='hl'
- )
- try:
- with con.cursor() as cursor:
- # 二、插入
- #1-插入一条数据
- sql = "insert into help_category(help_category_id, name, parent_category_id, url)value(900,'hl-test01',0,'');"
- #执行SQL语句
- cursor.execute(sql)
- #执行玩SQL语句要提交
- con.commit()
- print("提交成功")
-
- except Exception as e:
- # 如果执行失败要回滚
- con.rollback()
- print("数据库异常:\n",e)
- finally:
- #不管成功还是失败,都要关闭数据库连接
- con.close()
-
- if __name__ == '__main__':
- mysql_db()

插入结果如下:
3.2、插入多条数据
- try:
- with con.cursor() as cursor:
- # 二、插入
- #1-插入一条数据
- # sql = "insert into help_category(help_category_id, name, parent_category_id, url)values(900,'hl-test01',0,'');"
-
- # 2-插入多条数据
- value = "(901,'hl-test02',0,''),(902,'hl-test03',0,''),(903,'hl-test04',0,'')"
- # sql = f"insert into help_category(help_category_id, name, parent_category_id, url) values {value};"
- sql = f"insert into help_category values {value};"
- #执行SQL语句
- cursor.execute(sql)
- #执行玩SQL语句要提交
- con.commit()
- print("提交成功")
-
- except Exception as e:
- # 如果执行失败要回滚
- con.rollback()
- print("数据库异常:\n",e)
- finally:
- #不管成功还是失败,都要关闭数据库连接
- con.close()

4、更新数据
-
- try:
- with con.cursor() as cursor:
- #三、更新
- sql = f"update help_category set name='HL-Update' where help_category_id=900;"
- #执行SQL语句
- cursor.execute(sql)
- #执行完SQL语句要提交
- con.commit()
- print("提交成功")
-
- except Exception as e:
- # 如果执行失败要回滚
- con.rollback()
- print("数据库异常:\n",e)
- finally:
- #不管成功还是失败,都要关闭数据库连接
- con.close()

5、删除数据
-
- import pymysql
-
- #定义一个函数,用来操作数据库
- def mysql_db():
- con = pymysql.connect(
- host='192.168.223.130',
- port=3306,
- database='mysql',
- charset='utf8',
- user='root',
- password='hl'
- )
- try:
- with con.cursor() as cursor:
- #一、查询
- # sql = "select * from tables_priv;"
- #执行SQL语句
- #执行后的结果都保存在cursor中
- # cursor.execute(sql)
-
- #1-从cursor中获取全部数据用fetchall
- # datas = cursor.fetchall()
- # print("获取的数据:\n",datas)
-
- #2-从cursor中获取一条数据用fetchall
- # data = cursor.fetchone()
- # print("获取的数据:\n",data)
-
- #3-想要从cursor中获取几条数据用fetchmany
- # datas = cursor.fetchmany(1)
- # print("获取的数据:\n",datas)
-
- # 二、插入
- #1-插入一条数据
- # sql = "insert into help_category(help_category_id, name, parent_category_id, url)values(900,'hl-test01',0,'');"
-
- # 2-插入多条数据
- # value = "(901,'hl-test02',0,''),(902,'hl-test03',0,''),(903,'hl-test04',0,'')"
- # sql = f"insert into help_category values {value};"
-
- #三、更新
- # sql = f"update help_category set name='HL-Update' where help_category_id=900;"
-
- #四、删除
- sql = "delete from help_category where help_category_id like '90%';"
- #执行SQL语句
- cursor.execute(sql)
- #执行完SQL语句要提交
- con.commit()
- print("提交成功")
- except Exception as e:
- # 如果执行失败要回滚
- con.rollback()
- print("数据库异常:\n",e)
- finally:
- #不管成功还是失败,都要关闭数据库连接
- con.close()
-
- if __name__ == '__main__':
- mysql_db()

四、Python封装mysql数据库
1、将连接数据的参数写入mysqlConfig.py
- class MysqlConfig:
- HOST = '192.168.223.130'
- PORT = 3306
- USER = 'root'
- PASSWORD = 'hl'
- DB = 'mysql'
- CHARSET = 'utf8'
2、封装数据库的增删改查操作
-
- import pymysql
- from mysqlConfig import MysqlConfig
-
- class MysqlConnection:
- def __init__(self,host=MysqlConfig.HOST,
- port=MysqlConfig.PORT,
- user=MysqlConfig.USER,
- pwd=MysqlConfig.PASSWORD,
- db=MysqlConfig.DB):
- self.db = pymysql.connect(host=host,
- port=port,
- user=user,
- password=pwd,
- database=db,
- charset=MysqlConfig.CHARSET)#创建连接
- self.cursor = self.db.cursor()#创建游标
-
- #查询方法
- def query(self,sql,many=True):
- try:
- self.cursor.execute(sql)#执行SQL语句
- if many:
- res = self.cursor.fetchall()
- else:
- res = self.cursor.fetchone()
- return res
- except Exception as e:
- raise e#打印日志
- #增删改方法
- def __do(self,sql):
- try:
- self.cursor.execute(sql)#执行SQL语句
- except Exception as e:
- self.db.rollback()#如果执行失败要回滚
- #打日志
- raise e
- else:
- self.db.commit()#提交
-
- def update(self,sql):
- self.__do(sql)
-
- def insert(self,sql):
- self.__do(sql)
-
- def delete(self,sql):
- self.__do(sql)
-
- def exit(self):
- self.cursor.close()#关闭游标
- self.db.close()#关闭数据库
-
- if __name__ == '__main__':
- db = MysqlConnection()
- res = db.query('select * from tables_priv;')
- print(res)
- db.exit()

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。