鱼C论坛

 找回密码
 立即注册
查看: 2586|回复: 18

[已解决]不知道咋优化(关于批量UPDATE的),狠慢狠慢的(虽然确实达到了我的要求)

[复制链接]
发表于 2022-9-5 15:27:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
其实我的要求狠简单,就是假设数据库有100个记录,那我就按顺序update 某个字段即可,
可是update却要求 必须要有where字句  我真的不需要where啊   有个replace语句更不靠谱
def update():
    base="0123456789ABCDEF"
    conn=sql.connect("mac.db")
    c=conn.cursor()
    macres=c.execute("select mac from main where mac='1';")
    recoders=len(list(macres))
    data=[]   #这个data里面装的是若干个互不重复的MAC地址
    while len(data)<recoders:
        r="".join(random.sample(base,6))
        s="F07959"+r
        if s not in data:
            data.append(s)

    #print(data)
    allres=c.execute("select * from main where mac='1';" )
    idx=0
    sqltxt=""
    for x in allres:    #这个循环拼接update语句
        zh=x[1]
        sqltxt+="update main set mac='"+data[idx]+"' where zh='"+zh+"';"
        idx+=1
    c.executescript(sqltxt)  #执行拼接好的大量update语句
    conn.commit()   
    conn.close()
    tkinter.messagebox.showinfo("提示","批量替换成功,请进入查询模块查询信息")

狠慢狠慢的执行成功,慢到我点击那个按钮之后,那个按钮一直是按的状态,老半天才弹出
最佳答案
2022-9-6 10:07:17
wp231957 发表于 2022-9-6 08:39
现在初始化完毕了,(导入数据这个模块不用做了)
你可以先点击一下  查询数据 按钮   发现前两项都有 ...

我试了一下 啥也没改  点批量修改是一瞬间啊 没啥问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-5 15:58:29 | 显示全部楼层
换个别的模块试试吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-5 16:04:47 From FishC Mobile | 显示全部楼层
ba21 发表于 2022-9-5 15:58
换个别的模块试试吧。

是py自带的sqlite不友好吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-5 16:40:00 | 显示全部楼层
有多慢。。100条应该一瞬间吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-5 16:51:44 | 显示全部楼层
kogawananari 发表于 2022-9-5 16:40
有多慢。。100条应该一瞬间吧

我是130+   大约1-2分钟吧  具体也没查
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-5 16:54:31 | 显示全部楼层
wp231957 发表于 2022-9-5 16:51
我是130+   大约1-2分钟吧  具体也没查

db文件和要覆盖的电子表格发我我试试 我不信这么慢 但是代码看不出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-5 16:55:51 | 显示全部楼层
你表中就只有一列mac地址吗,有没有主键之类的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-5 17:03:38 | 显示全部楼层
kogawananari 发表于 2022-9-5 16:54
db文件和要覆盖的电子表格发我我试试 我不信这么慢 但是代码看不出来

刚才重新还原了一下数据,重头做了一下,用秒表测试 15-16秒之间  
你还要代码吗  用不用发了??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-5 17:04:34 | 显示全部楼层
wyh551202 发表于 2022-9-5 16:55
你表中就只有一列mac地址吗,有没有主键之类的

有啊,有个id键  设置为非空  不能重复
mac 非空  
zh 非空
mc 非空
flag 非空
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-5 17:35:44 | 显示全部楼层
wp231957 发表于 2022-9-5 17:03
刚才重新还原了一下数据,重头做了一下,用秒表测试 15-16秒之间  
你还要代码吗  用不用发了??

要得 15秒也离谱
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-5 17:41:50 From FishC Mobile | 显示全部楼层
kogawananari 发表于 2022-9-5 17:35
要得 15秒也离谱

好的,明天发,今天回家了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-6 08:39:44 | 显示全部楼层

现在初始化完毕了,(导入数据这个模块不用做了)
你可以先点击一下  查询数据 按钮   发现前两项都有数据,第三项没有数据  这就对了,
然后点击 批量修改mac 按钮  完成后,点击查询数据  按钮  发现mac 一项 有数据   这就对了

如果中途误操作,数据库乱了,可以 copy mac.db.bak  mac.db  就恢复现场了,不过此时 需要做  导入数据这个模块 (选择压缩包里面的文本文件就OK)

mac_gui.zip

8.65 KB, 下载次数: 1

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-6 10:07:17 | 显示全部楼层    本楼为最佳答案   
wp231957 发表于 2022-9-6 08:39
现在初始化完毕了,(导入数据这个模块不用做了)
你可以先点击一下  查询数据 按钮   发现前两项都有 ...

我试了一下 啥也没改  点批量修改是一瞬间啊 没啥问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-6 10:09:35 From FishC Mobile | 显示全部楼层
kogawananari 发表于 2022-9-5 17:35
要得 15秒也离谱

那就先这样吧,反正我这个是一次性模块
以后就是单条记录修改,就不会慢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-6 10:10:31 | 显示全部楼层
kogawananari 发表于 2022-9-6 10:07
我试了一下 啥也没改  点批量修改是一瞬间啊 没啥问题

不过好像有点小bug 最后有序号重复的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-6 10:13:22 From FishC Mobile | 显示全部楼层
kogawananari 发表于 2022-9-6 10:10
不过好像有点小bug 最后有序号重复的

不能吧,id设的是主键,再说我代码也控制了啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-6 10:17:28 | 显示全部楼层
wp231957 发表于 2022-9-6 10:13
不能吧,id设的是主键,再说我代码也控制了啊

你发我的 我先点一次查询 再点一次批量修改 再点查询 就有重复的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-6 10:26:04 From FishC Mobile | 显示全部楼层
kogawananari 发表于 2022-9-6 10:17
你发我的 我先点一次查询 再点一次批量修改 再点查询 就有重复的

谢谢,我再好好看看,虽然并不影响啥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-8 10:11:44 From FishC Mobile | 显示全部楼层
kogawananari 发表于 2022-9-6 10:17
你发我的 我先点一次查询 再点一次批量修改 再点查询 就有重复的

搞定了,在插入数据前,先清空tree控件里面的内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-16 21:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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