pyDAL一个python的ORM(8) pyDAL的commit()方法

发布时间:2024年01月08日

一、db.commit()介绍

? ? pyDAL在使用过程中,所有对表和表中数据的增删改操作,必须写一句:db.commit()才能提交数据库生效

(1)表操作

define_table、drop、truncate

(2)数据操作

insert、update、delete、update_record、update_or_insert

例如,增加一条数据,这样才是完整的:

db.person.insert(name="Alex",dept='finance',id='001')

db.commit()

二、db.commit()注意事项

如果我们每条数据增删改的指令都db.commit(),效能会变低,考虑到并发,稳妥的做法是每次都commit,但也不能 一味求稳?我们需要灵活掌握:

例如我们在做?循环或批量 增改数据,我们确定 每个增改 不立即生效 也不会发生并发问题 或者 每个增改结果 不必立即引用,那可以 循环和批量结束 db.commit() 一次,这样能减少开销

例如:我们插入3条数据

names=['sarah','david','smith']

ids=['003','004','005']

for i in range(0, len(names)):

??? db.person.insert(name=names[i],dept='finance',id=ids[i])

db.commit()

三、update_or_insert注意事项

? ?显然如果我们 用的是update_or_insert”必须每次都commit,因为我们的增改结果需要马上引用,所以要实时更新,不然就不准确了:

for i in range(0, len(names)):

??? db.person.update_or_insert(db.person.id.belongs(ids),name=names[i],dept='finance',id=ids[i])

??? db.commit()

四、为什么web2py不必commit?

? ?因为web2py框架会根据事务完成情况,自动执行commitrollback(如果有异常),手册原话是:

? ? ? in models, views and controllers there is no need to ever call?commit?or?rollback explicitly in web2py unless you need more granular control. However, in modules you will need to use?commit()

文章来源:https://blog.csdn.net/u010018782/article/details/135452038
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。