我试图在下面的函数中使用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
Run Code Online (Sandbox Code Playgroud)
是什么导致语法错误?
顺便说一句,我知道我需要在事务中包装两个插入,但由于某种原因,我无法使事务工作(SQLALchemy抛出与事务相关的错误) - 所以那是另一个问题的另一个时间..
[[编辑]]
异常错误(现已修复)是:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/path/to/script.py", line 1632
finally:
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
您在通话中错过了一个右括号execute().它应该是:
conn.execute("DELETE FROM temporary_data_key WHERE key={0}".format(guid))
Run Code Online (Sandbox Code Playgroud)
代替:
conn.execute("DELETE FROM temporary_data_key WHERE key={0}".format(guid)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7763 次 |
| 最近记录: |