知道原因了,是英语水平太low。。。 sansTran的前缀sans是无的意思。。。 文档应该翻译成设置为True时,不再调用commit和rollback了
在robotframework中使用 DatabaseLibrary时,有个参数令我很疑惑,它就是 sansTran,这个参数在很多地方出现,它的解释是
Set optional input
`sansTran` to True to run command without an explicit transaction
commit or rollback.
我的理解是,当这个参数设置为True时,不用在显式的调用commit和rollback。 但是其实现代码如下,以
execute_sql_string为例:
def execute_sql_string(self, sqlString, sansTran=False):
"""
Executes the sqlString as SQL commands and returns number of rows
affected. Useful to pass arguments to your sql. Set optional input
`sansTran` to True to run command without an explicit transaction
commit or rollback.
SQL commands are expected to be delimited by a semi-colon (';').
For example:
| Execute Sql String | DELETE FROM person_employee_table; DELETE FROM person_table |
For example with an argument:
| Execute Sql String | SELECT * FROM person WHERE first_name = ${FIRSTNAME} |
Using optional `sansTran` to run command without an explicit transaction commit or rollback:
| Execute Sql String | DELETE FROM person_employee_table; DELETE FROM person_table | True |
"""
cur = None
result = 0
try:
cur = self._dbconnection.cursor()
logger.info('Executing : Execute SQL String | %s ' % sqlString)
result = self.__execute_sql(cur, sqlString)
if not sansTran:
self._dbconnection.commit()
finally:
if cur:
if not sansTran:
self._dbconnection.rollback()
return result
可以看到,只有当sansTran为False时,才会自动commit或者rollback。
是我理解错了,还是文档写的有问题呢????