# Trying to insert transactions fails

**URL:** <https://discuss.dgraph.io/t/trying-to-insert-transactions-fails/13273>\
**Category:** Users\
**Created:** [March 18, 2021, 9:27am UTC](https://discuss.dgraph.io/t/trying-to-insert-transactions-fails/13273 "2021-03-18T09:27:25Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![eax](https://avatars.discourse-cdn.com/v4/letter/e/7993a0/32.png) [@eax](https://discuss.dgraph.io/u/eax)\
**Post date:** [March 18, 2021, 9:27am UTC](https://discuss.dgraph.io/t/trying-to-insert-transactions-fails/13273/1 "2021-03-18T09:27:25Z")

</div>

Hi,

I am trying to insert many records from a database into dgraph.  
However, the process fails with the following message:

```
response = txn.mutate(set_obj=json_payload)

```

File “/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pydgraph/txn.py”, line 76, in mutate  
return self.do\_request(req, timeout=timeout, metadata=metadata, credentials=credentials)  
File “/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pydgraph/txn.py”, line 91, in do\_request  
raise errors.TransactionError(‘Transaction has already been committed or discarded’)  
pydgraph.errors.TransactionError: Transaction has already been committed or discarded

Here is the function to insert the data:  
def create\_data(client):  
# Create a new transaction.  
txn = client.txn()  
TXN = DbQuery()

```
# Create data.
for item in db:
        try:
            json_payload = {
                # 'uid': '_:did',
                'Transaction.seqNo': item['seqNo'],
                'Transaction.type': resolve_txn_type(item),
                'Transaction.time': resolve_txn_time(item),
                'Transaction.endorser': None,
                'Transaction.author': None,
                'DID.did': did,
                'DID.verkey': verkey,
                'DID.role': role,
                'DID.alias': alias,
            }

            print('JSON UPDATE IS',json_payload)

            # Run mutation.
            response = txn.mutate(set_obj=json_payload)
            # Commit transaction.
            txn.commit()

            # print('Created Transaction with uid = {}'.format(response.uids['did']))
            print('Created Transaction with seqNo = {} and DID {}'.format(item['seqNo'], did))
        # except TxnConflictException as ex:
        except Exception as e:
            print("TX ERROR", e. __class__ , "occurred.")
        finally:
            # Clean up. Calling this after txn.commit() is a no-op and hence safe.
            # print('discarding tx')
            txn.discard()

```

Any ideas or pointers will be appreciated?

---

<div class="post-metadata">

**Author:** ![anand](https://yyz1.discourse-cdn.com/flex007/user_avatar/discuss.dgraph.io/anand/32/5674_2.png) [@anand](https://discuss.dgraph.io/u/anand)\
**Post date:** [March 18, 2021, 10:37am UTC](https://discuss.dgraph.io/t/trying-to-insert-transactions-fails/13273/2 "2021-03-18T10:37:52Z")

</div>

Welcome @eax  
The opening of a new transaction, `txn = client.txn()` needs to be inside the for loop.
