После фиксации вашего ввода так, чтобы он был правильно разделен запятой:
jq -R 'split(";")
| map(gsub("^\"|\"$";""))
| {title:.[1],
price: .[2],
description: { plain_text: .[3] }}' input.csv
дает:
{
"title": "Product Name",
"price": "Price",
"description": {
"plain_text": "Description"
}
}
{
"title": "Example",
"price": "200",
"description": {
"plain_text": "Descripcion here..."
}
}
{
"title": "Example2",
"price": "300",
"description": {
"plain_text": "Some here..."
}
}
Транзакции Redis не имеют возможности «отката» - как только вы вызовете p.execute()
, операции в нем будут выполнены. Вы можете отменить транзакцию в любое время до ее исполнения, позвонив по номеру p.discard()
.
Когда вы отменяете транзакцию, она не откатывается, потому что на самом деле никакие операции не выполнялись.
@application.route("/test/transactions/<int:trigger>")
def test_transactions(trigger):
try:
logging.info('test transactions triggered')
r = redis.Redis(connection_pool=POOL)
p = r.pipeline(transaction=True)
p.hmset('multitest', {'thefield':'thevalue'})
if trigger==1:
p.discard()
return "discarded"
else:
p.hmset('multitest2', {'a':'b'})
retval = p.execute()
logging.info(retval)
return "keys created"
except Exception as e:
logging.error(e)
Примечание: я не получаю ваш код полностью - вы можете проверить trigger
перед чем-либо и пропустить попытку транзакции.