python中如何判断sql语句操作成功?


运行环境 Runtime environment

1
2
3
4
操作系统: Windos10  
IDE: pycharm 2021.3.1 x64
语言: python v3.9.1
模块: Pymysql

背景

老话说,石头丢到水里,怎么说也能听个响声。

这其实就是一种交互以后得到反馈的过程。

那么,python是用mysql数据库入库以后,我要如何得知自己的入库情况呢?

思路

mysql 无论是 插入数据 或者 更新插入 或者 替换插入 等方式,它们最终都会影响到数据的变动,而mysql会反馈发生数据变动的行数。

  • 插入数据

    通常只有一行数据发生了变化,返回一般是 1 行

  • 更新插入&替换插入

    一般返回的是 2 行,即删除1行,添加1行的操作

    但是碰到数据实际上无变化那就无需更新,mysql就会略过插入操作,返回的行数变动数量就会是 0

代码

部分代码如下(pymysql如何链接数据库总不用写了吧..):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# ...
# import pymysql

# conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='你的数据库密码', db='mydb', charset='utf8')

# cursor = conn.cursor()

# 使用变量接收
data_add_status = cursor.execute(sql, vs)
# 入库状态响应
if data_add_status:
print("入库操作 : rows = {} 行发生变动".format(cursor.rowcount))
if data_add_status == 2:
print(f"数据表: {table_name}", data_add_status, item_sign, "旧数据 更新入库完成!")
elif data_add_status == 1:
print(f"数据表: {table_name}", data_add_status, item_sign, "新数据 新增入库完成!")
else:
print(f"行数变动:{data_add_status} {table_name} {item_sign} 入库失败! 可能是数据重复,无需入库!")

总结

重点是对 cursor 游标对象里rowcount方法的使用,

获取到数据库变动的行数来大致的推断数据的入库情况。