小白,求助PY问题?????
按惯例先上代码:result12 = cursor.execute('select count(id) from dr')
kn = result12.fetchone()
kb = kn
xx1 = cursor.execute("select number from dr")
xx2 = xx1.fetchall()
for i in range(0, kb):
xx13 = str(xx2)
print(xx13)
xx3 = cursor.execute('select * from back where number = ?', )
xx6 = xx3.fetchone()
print(xx6)
if xx6 == None:
cursor.execute("delete from dr where number = ?",)
conn.commit()
两个数据库的数据进行对比,把相同的留下,没有的删掉,把back和dr进行对比,DR库相同的留下,不相同的删掉,back库有300条数据,DR库有600条数据,每次进到300条数据就停下来了,而且这300条都是DR库有的,没有的不进行对比了,程序结束了,多余的也不删。请大神帮忙看一下。 把back所有数据都读到一个list中
再把dr所有数据读到另外一个list中
然后处理就是了.
这么少的数据 本帖最后由 thepoy 于 2020-7-15 22:09 编辑
变量起名时要科学啊,你这种代码,看一眼就懒得看第二眼。等过两天,你自己写的代码自己都看不懂了。
```python
result12 = cursor.execute('select count(id) from dr')# dr表中数据的数量
kn = result12.fetchone()
kb = kn# dr表中数据的数量
xx1 = cursor.execute("select number from dr")# dr表中取中所有的number字段,上面的result12 = cursor.execute('select count(id) from dr')就属于重复代码了吧,因为数量不就是len(xx2)吗?而且查找表中数量总量最好用count(*),不要count(字段名)
xx2 = xx1.fetchall()
for i in range(0, kb):
xx13 = str(xx2)
print(xx13)
xx3 = cursor.execute('select * from back where number = ?', )
xx6 = xx3.fetchone()
print(xx6)
if xx6 == None:# 如果back表中没有xx13,就在dr中删除此条数据?这是你想要的结果吗?
cursor.execute("delete from dr where number = ?",)
conn.commit()# commit()为什么要放在这里?
``` thepoy 发表于 2020-7-15 21:52
变量起名时要科学啊,你这种代码,看一眼就懒得看第二眼。等过两天,你自己写的代码自己都看不懂了。
...
多谢大神的指点,小弟受教了!
我这段代码就是要实现的功能和你讲的一样,期中好多不规范的地方,小弟我一一改进!
请问:
if xx6 == None:# 如果back表中没有xx13,就在dr中删除此条数据?这是你想要的结果吗?
cursor.execute("delete from dr where number = ?",)
我是要实现上面这功能,但实际程序跑起来就是不行,不知道哪里出错,请指点。
ClutchBear 发表于 2020-7-15 18:43
把back所有数据都读到一个list中
再把dr所有数据读到另外一个list中
然后处理就是了.
请大神指点,用两个list怎么个写法,因为back库和dr库的内容不一样,只有关键字number相同。 charles5272 发表于 2020-7-16 12:23
多谢大神的指点,小弟受教了!
我这段代码就是要实现的功能和你讲的一样,期中好多不规范的地方,小弟我 ...
就以你这些代码来看,除了commit()应该放到最后,其他的没看出有什么逻辑问题。我怀疑你所说的到300停下来表述有问题。可以把代码和sql文件发出来。
页:
[1]