The problem is caused by the too long message. When you send data with the IOTA Python library (PyOTA) to the Tangle, it first converts the unicode message into trytes, then puts these trytes into the signature/message field of a transaction.
When the converted trytes are too long to fit in one transaction, it splits them across two transactions. Now comes ...
Nodes can choose to take a local snapshot at any time, which would delete old transactions from their ledgers.
Therefore, to be sure that your zero value transactions are not deleted, you would need to run your own node that does not take local snapshots.
See the developer documentation for information on running a node.
I am not a developer, so I can not help you with the code.
One first note: Sending names, surnames and other GDPR protected information publicly over a DLT like the Tangle (or any other blockchain) is excluding your solution from being GDPR compliant as permanodes (or the blockchain) keep this information forever.
More information about Blockchain and GDPR ...