鱼C论坛

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

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

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

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

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

x
其实我的要求狠简单,就是假设数据库有100个记录,那我就按顺序update 某个字段即可,
可是update却要求 必须要有where字句  我真的不需要where啊   有个replace语句更不靠谱

  1. def update():
  2.     base="0123456789ABCDEF"
  3.     conn=sql.connect("mac.db")
  4.     c=conn.cursor()
  5.     macres=c.execute("select mac from main where mac='1';")
  6.     recoders=len(list(macres))
  7.     data=[]   #这个data里面装的是若干个互不重复的MAC地址
  8.     while len(data)<recoders:
  9.         r="".join(random.sample(base,6))
  10.         s="F07959"+r
  11.         if s not in data:
  12.             data.append(s)

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


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

我试了一下 啥也没改  点批量修改是一瞬间啊 没啥问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-9-5 15:58:29 | 显示全部楼层
换个别的模块试试吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

是py自带的sqlite不友好吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-5 16:40:00 | 显示全部楼层
有多慢。。100条应该一瞬间吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我是130+   大约1-2分钟吧  具体也没查
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

db文件和要覆盖的电子表格发我我试试 我不信这么慢 但是代码看不出来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-5 16:55:51 | 显示全部楼层
你表中就只有一列mac地址吗,有没有主键之类的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

刚才重新还原了一下数据,重头做了一下,用秒表测试 15-16秒之间  
你还要代码吗  用不用发了??
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

有啊,有个id键  设置为非空  不能重复
mac 非空  
zh 非空
mc 非空
flag 非空
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

要得 15秒也离谱
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

好的,明天发,今天回家了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

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

mac_gui.zip

8.65 KB, 下载次数: 1

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我试了一下 啥也没改  点批量修改是一瞬间啊 没啥问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

那就先这样吧,反正我这个是一次性模块
以后就是单条记录修改,就不会慢了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

不过好像有点小bug 最后有序号重复的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

不能吧,id设的是主键,再说我代码也控制了啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

你发我的 我先点一次查询 再点一次批量修改 再点查询 就有重复的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢,我再好好看看,虽然并不影响啥
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

搞定了,在插入数据前,先清空tree控件里面的内容
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 22:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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