charles5272 发表于 2020-7-15 10:37

小白,求助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库有的,没有的不进行对比了,程序结束了,多余的也不删。请大神帮忙看一下。

ClutchBear 发表于 2020-7-15 18:43

把back所有数据都读到一个list中
再把dr所有数据读到另外一个list中
然后处理就是了.
这么少的数据

thepoy 发表于 2020-7-15 21:52

本帖最后由 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()为什么要放在这里?
```

charles5272 发表于 2020-7-16 12:23

thepoy 发表于 2020-7-15 21:52
变量起名时要科学啊,你这种代码,看一眼就懒得看第二眼。等过两天,你自己写的代码自己都看不懂了。
...

多谢大神的指点,小弟受教了!
我这段代码就是要实现的功能和你讲的一样,期中好多不规范的地方,小弟我一一改进!
请问:
if xx6 == None:# 如果back表中没有xx13,就在dr中删除此条数据?这是你想要的结果吗?
                cursor.execute("delete from dr where number = ?",)
我是要实现上面这功能,但实际程序跑起来就是不行,不知道哪里出错,请指点。

charles5272 发表于 2020-7-16 12:25

ClutchBear 发表于 2020-7-15 18:43
把back所有数据都读到一个list中
再把dr所有数据读到另外一个list中
然后处理就是了.


请大神指点,用两个list怎么个写法,因为back库和dr库的内容不一样,只有关键字number相同。

thepoy 发表于 2020-7-16 17:25

charles5272 发表于 2020-7-16 12:23
多谢大神的指点,小弟受教了!
我这段代码就是要实现的功能和你讲的一样,期中好多不规范的地方,小弟我 ...

就以你这些代码来看,除了commit()应该放到最后,其他的没看出有什么逻辑问题。我怀疑你所说的到300停下来表述有问题。可以把代码和sql文件发出来。
页: [1]
查看完整版本: 小白,求助PY问题?????