吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1012|回复: 5
收起左侧

[求助] 小白,求助PY问题?????

[复制链接]
charles5272 发表于 2020-7-15 10:37
按惯例先上代码:
        result12 = cursor.execute('select count(id) from dr')
        kn = result12.fetchone()
        kb = kn[0]
        xx1 = cursor.execute("select number from dr")
        xx2 = xx1.fetchall()
        for i in range(0, kb):
            xx13 = str(xx2[i][0])
            print(xx13)
            xx3 = cursor.execute('select * from back where number = ?', [xx13])
            xx6 = xx3.fetchone()
            print(xx6)
            if xx6 == None:
                cursor.execute("delete from dr where number = ?",[xx13])
                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 编辑

变量起名时要科学啊,你这种代码,看一眼就懒得看第二眼。等过两天,你自己写的代码自己都看不懂了。
        result12 = cursor.execute('select count(id) from dr')  # dr表中数据的数量
        kn = result12.fetchone()
        kb = kn[0]  # 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[i][0])
            print(xx13)
            xx3 = cursor.execute('select * from back where number = ?', [xx13])
            xx6 = xx3.fetchone()
            print(xx6)
            if xx6 == None:  # 如果back表中没有xx13,就在dr中删除此条数据?这是你想要的结果吗?
                cursor.execute("delete from dr where number = ?",[xx13])
                conn.commit()  # commit()为什么要放在这里?
 楼主| charles5272 发表于 2020-7-16 12:23
thepoy 发表于 2020-7-15 21:52
变量起名时要科学啊,你这种代码,看一眼就懒得看第二眼。等过两天,你自己写的代码自己都看不懂了。
[md] ...

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

 楼主| 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文件发出来。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 14:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表