我试图在下面的函数中使用 finally,但是,Python 报告了一个语法错误。我确定我在做一些愚蠢的事情,但我似乎无法发现它......
片段如下:
# Store ids with key
# Returns GUID (used to clear table after words)
def storeIdsInTemporaryTable(dbinfo, id_list):
conn = dbinfo['db_connection']
guid = genutils.getGUID()
orig_tableinfo = dbinfo['table']
orig_datarows = dbinfo['datarows']
metadata = dbinfo['metadata']
sql = "INSERT INTO temporary_data_key (key) VALUES ({0}) RETURNING id".format(guid)
key_id = executeSQLonDbConnection(dbinfo, sql, return_field='id')
tableinfo = Table('temporary_data', metadata, autoload=True)
datarows = []
for id_value in id_list:
datarows.append( { 'key_id': key_id, 'id_value': id_value} )
try:
insertToDb(dbinfo)
except:
guid = None # to indicate an error occured
if key_id:
conn.execute("DELETE FROM temporary_data_key WHERE key={0}".format(guid)
finally:
dbinfo['table'] = orig_tableinfo
dbinfo['datarows'] = orig_datarows
return guid
是什么导致语法错误?
顺便说一句,我知道我需要将两个插入包装在一个事务中,但由于某种原因,我无法让事务工作(SQLALchemy 引发与事务相关的错误) - 所以下次再问另一个问题..
[[编辑]]
异常错误(现已修复)是:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/path/to/script.py", line 1632
finally:
^
SyntaxError: invalid syntax