我有一种情况,我必须在表中插入大量记录。我已将插入内容包装在(对象的)成员函数中。但这需要很多时间。为了优化这一点,我将所有这些记录保存在缓冲区(作为列表)中作为类的数据成员。当没有。记录达到100,我正在进行批量插入。
这是代码。
class TabDailyQuotes:
def __init__(self, metadata):
self.metadata = metadata
self.indexes = Table('DailyQuotes', metadata, autoload=True)
self.ins_buf = []
self.ins = self.indexes.insert()
def insert(self, dict_data):
if isinstance(dict_data, types.DictType):
for key, val in dict_data.items():
self.ins_buf.append(val)
else:
self.ins_buf.append(dict_data)
if len (self.ins_buf) == 100:
self.ins.execute(self.ins_buf)
self.ins_buf = []
def __del__(self):
if len (self.ins_buf) > 0:
self.ins.execute(self.ins_buf)
self.ins_buf = []
这里的问题是,当我调用函数只插入一条记录(以及后续调用插入后续记录)时,我必须使用__del__()
魔术函数在末尾插入所有剩余的记录对象的生命。
有人能告诉我一个更好的方法来解决这个问题吗?
答案 0 :(得分:0)
不能保证__del__会被调用。因此,最好明确清理操作并为其定义一个独特的方法,然后在程序关闭或TabDailyQuotes对象超出范围时调用它。
参考文献:
I don't understand this python __del__ behaviour
Is it really OK to do object closeing/disposing in __del__?