背景描述
公司项目用到的数据库是MySQL,测试过程中经常需要对数据库进行一些批量操作。故在此记录一下基本的增删改查的操作,以便后续自己操作的时候能够快速翻查。
预置条件
- MySQL环境已安装准备完毕
- Python环境已安装准备完毕
- 示例使用PyCharm IDE写py脚本
具体实践
连数据库
- 导入pymysql库
在PyCharm的Terminal窗口执行pip install pymysql。(注:必须先导入pip的库才能使用该指令)
也可以通过Pycharm 导航栏的preference 进入到 Project Interpreter进行库的添加(pip库也可以通过该方式添加)
- 连接数据库
在py脚本中执行下述代码:
import pymysql
conn = pymysql.connect(user = '数据库用户名',password = '密码',port = 3306,db = 'TBL_TEST',host = '数据库服务端ip',charset = 'utf8')
#获取游标
cursor = conn.cursor()
如果没有报错,则说明连接成功。报错的话,则查看具体原因,进行排查。
创建表单
在TBL_TEST数据库里创建测试用的表TBL_ScaningGroup。该表包含两个varchar类型字段ISDN、GroupID,且都设置为主键。
#------创建表----------#
createSQL = """CREATE TABLE TBL_ScaningGroup(
ISDN VARCHAR(10),
GroupID VARCHAR(10),
PRIMARY KEY(ISDN,GroupID)
)CHARSET UTF8 """
try:
cursor.execute('DROP TABLE IF EXISTS TBL_ScaningGroup')
cursor.execute(createSQL)
conn.commit()
except:
import traceback
print("创建表失败!")
traceback.print_exc()
conn.rollback()
finally:
cursor.close()
conn.close()
创建成功后,可以进入该数据库,执行下述语句查看该表创建情况。
DESC TBL_ScaningGroup;
插入数据
设置的插入数据要求如下:
- 测试需要往表里面插入300条数据。
- ISDN和GroupID都是递增的,且步长为1。
- 毎50个ISDN对应同一个GroupID。
#------插入数据--------#
insertSQL = 'INSERT INTO TBL_ScaningGroup (ISDN,GroupID) VALUES (%s,%s)'
step = 50
try:
for i in range(0,6):
GroupID = 13901050001 + i
for j in range(1,51):
ISDN = 13901000000 + j + i*step
cursor.execute(insertSQL,(ISDN,GroupID))
conn.commit() #切记提交事务。默认是需要手动提交的。
except:
import traceback
print("数据插入失败!")
traceback.print_exc()
conn.rollback() #插入失败,则进行回滚操作。
finally:
cursor.close()
conn.close()
查看数据是否插入成功:
查询数据
#------查询数据--------#
selectSQL = 'SELECT * FROM TBL_ScaningGroup'
try:
cursor.execute(selectSQL)
results = cursor.fetchall()
for row in results:
ISDN = row[0]
GroupID = row[1]
print(ISDN,GroupID)
except:
import traceback
print("数据查询失败!")
traceback.print_exc()
finally:
cursor.close()
conn.close()
更新数据
更新的数据要求如下:
- 各ISDN对应的GroupID递增1。及原先如果是“13901050001”,则变为“13901050002”。
- ISDN字段不变。
#------更新数据-------#
updateSQL = 'UPDATE TBL_ScaningGroup SET GroupID = %s WHERE ISDN = %s'
# 先查询数据总数
jquery = 'SELECT COUNT(*) FROM TBL_ScaningGroup'
try:
cursor.execute(jquery)
result1 = cursor.fetchone()
count = result1[0]
step = 50;
print(count)
for i in range(1,count+1):
addCount = (i // (step + 1)) #毎50个递增一次
cursor.execute(updateSQL,(13901050002 + addCount,13901000000 + i))
conn.commit()
except:
import traceback
print("数据更新失败")
traceback.print_exc()
conn.rollback()
finally:
cursor.close()
conn.close()
删除数据
#-------删除数据---------#
#删除ISDN大于13901000100
deleteSQL = 'DELETE FROM TBL_ScaningGroup WHERE ISDN >= %s'
try:
cursor.execute(deleteSQL,13901000100)
conn.commit()
except:
import traceback
print("数据删除异常")
traceback.print_exc()
conn.rollback()
finally:
cursor.close()
conn.close()
小结
数据库这些基本操作,用的少会经常遗忘。写下这些就是为了以后自己查询方便。同时,后面要坚持写一些工作中实用的东西,也算是工作的一种修行吧。^_ ^
以上