问题描述
我们平时需要使用Python来同步数据,我的思路是读取数据库1的id,再读取数据库2的id,形成两个列表,然后对比两个列表,快速找出列表1有但列表2没有的数据,就作为需要新增同步的数据id。然后在读取id进行同步。
为什么要这样设计了呢,因为可能之前的同步会失败,所以可能列表1和列表2中的id有重叠部分,也有非重叠部分,所以这样做容错率会更高。
解决方法
所以我模拟了两个列表如下:
data_1_id_list = [1,2,3,4]
data_2_id_list = [1,4,5,6]
通过上面列表可以看出,我们需要新增同步的是,2,3这两个id 的数据。
data_1_id_list = [1,2,3,4]
data_2_id_list = [1,4,5,6]
# 将两个列表转换为集合
set_1 = set(data_1_id_list)
set_2 = set(data_2_id_list)
# 使用差集运算来获取set_1有但set_2没有的数据
diff = set_1.difference(set_2)
# 将结果转换回列表格式
add_id_list = list(diff)
print(add_id_list)
在这个例子中,我们首先将两个列表转换为集合(set
),然后使用symmetric_difference()
方法来计算两个集合之间的对称差集。最后,我们将结果转换回列表格式。这样,你就可以得到data_1_id_list
中有但data_2_id_list
中没有的数据。
最后输出:
[2, 3]