不知道咋优化(关于批量UPDATE的),狠慢狠慢的(虽然确实达到了我的要求)
其实我的要求狠简单,就是假设数据库有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
sqltxt+="update main set mac='"+data+"' where zh='"+zh+"';"
idx+=1
c.executescript(sqltxt)#执行拼接好的大量update语句
conn.commit()
conn.close()
tkinter.messagebox.showinfo("提示","批量替换成功,请进入查询模块查询信息")
狠慢狠慢的执行成功,慢到我点击那个按钮之后,那个按钮一直是按的状态,老半天才弹出 换个别的模块试试吧。 ba21 发表于 2022-9-5 15:58
换个别的模块试试吧。
是py自带的sqlite不友好吗? 有多慢。。100条应该一瞬间吧 kogawananari 发表于 2022-9-5 16:40
有多慢。。100条应该一瞬间吧
我是130+ 大约1-2分钟吧具体也没查 wp231957 发表于 2022-9-5 16:51
我是130+ 大约1-2分钟吧具体也没查
db文件和要覆盖的电子表格发我我试试 我不信这么慢 但是代码看不出来{:10_266:} 你表中就只有一列mac地址吗,有没有主键之类的 kogawananari 发表于 2022-9-5 16:54
db文件和要覆盖的电子表格发我我试试 我不信这么慢 但是代码看不出来
刚才重新还原了一下数据,重头做了一下,用秒表测试 15-16秒之间
你还要代码吗用不用发了?? wyh551202 发表于 2022-9-5 16:55
你表中就只有一列mac地址吗,有没有主键之类的
有啊,有个id键设置为非空不能重复
mac 非空
zh 非空
mc 非空
flag 非空
wp231957 发表于 2022-9-5 17:03
刚才重新还原了一下数据,重头做了一下,用秒表测试 15-16秒之间
你还要代码吗用不用发了??
要得 15秒也离谱 kogawananari 发表于 2022-9-5 17:35
要得 15秒也离谱
好的,明天发,今天回家了 kogawananari 发表于 2022-9-5 17:35
要得 15秒也离谱
现在初始化完毕了,(导入数据这个模块不用做了)
你可以先点击一下查询数据 按钮 发现前两项都有数据,第三项没有数据这就对了,
然后点击 批量修改mac 按钮完成后,点击查询数据按钮发现mac 一项 有数据 这就对了
如果中途误操作,数据库乱了,可以 copy mac.db.bakmac.db就恢复现场了,不过此时 需要做导入数据这个模块 (选择压缩包里面的文本文件就OK) wp231957 发表于 2022-9-6 08:39
现在初始化完毕了,(导入数据这个模块不用做了)
你可以先点击一下查询数据 按钮 发现前两项都有 ...
我试了一下 啥也没改点批量修改是一瞬间啊{:10_247:} 没啥问题 kogawananari 发表于 2022-9-5 17:35
要得 15秒也离谱
那就先这样吧,反正我这个是一次性模块
以后就是单条记录修改,就不会慢了 kogawananari 发表于 2022-9-6 10:07
我试了一下 啥也没改点批量修改是一瞬间啊 没啥问题
不过好像有点小bug 最后有序号重复的 kogawananari 发表于 2022-9-6 10:10
不过好像有点小bug 最后有序号重复的
不能吧,id设的是主键,再说我代码也控制了啊 wp231957 发表于 2022-9-6 10:13
不能吧,id设的是主键,再说我代码也控制了啊
你发我的 我先点一次查询 再点一次批量修改 再点查询 就有重复的 kogawananari 发表于 2022-9-6 10:17
你发我的 我先点一次查询 再点一次批量修改 再点查询 就有重复的
谢谢,我再好好看看,虽然并不影响啥 kogawananari 发表于 2022-9-6 10:17
你发我的 我先点一次查询 再点一次批量修改 再点查询 就有重复的
搞定了,在插入数据前,先清空tree控件里面的内容
页:
[1]