我正在尝试测试我的db_insert()
方法是否有效。
def db_insert(data,insert_query,limit=100):
"""Persist data to database
:param data: Tuple of tuples
:param insert_query: String
:param limit: Integer
"""
# Insert / Merge
cursor = conn.cursor()
try:
for i in range(0,int(len(data) / limit) + 1):
sliced_data = data[i * limit:i * limit + limit]
if sliced_data:
cursor.executemany(insert_query,sliced_data)
conn.commit()
except Exception as e:
conn.rollback()
raise DBException('ScriptName:db_manager.py,ErrorType:{}Impact:Unable to insert into database,'
'ErrorMessage:{}'.format(type(e).__name__,e))
此方法由另一种方法调用:
def insert(cls,new_list):
"""Insert new data to DB
:param new_list: List
"""
try:
insert_query = "insert into TABLE {} values {}" \
.format(tuple(cls.TABLE_ATTR[1:]),('%s',) * len(cls.TABLE_ATTR[1:]))
insert_query = insert_query.replace('\'','')
db_insert(new_list,insert_query)
except Exception as e:
logger.exception(e)
最后,insert()
子类中的测试将调用TestCase
方法:
def test_insert_method_success(self):
SomeModule.insert(['text1','text2','text3',1,settings.SCRIPT_RUN_TIME])
cursor = conn.cursor()
cursor.execute("select * from TABLE")
data = cursor.fetchall()
print(data) # [1]
[1]中的输出返回2个元组。但是,这些元组是使用models.save()
中的setUp()
添加到数据库中的数据。
有人可以告诉我为什么conn.commit()
不能如实际运行那样将数据持久保存到数据库中吗?