Thank you for providing the full example. You've hit one of the spots where reactions are tightly linked to models. We should make it work for isolated reactions but the assumption is that the reaction belongs to a model so that we can look up the metabolites or add them to the model when they're missing. So in order to fix your problem:
In [1]: import cobra
In [7]: m = cobra.Model()
In [8]: m.add_reactions([my_reaction])
In [9]: my_reaction.reaction = 'malACP_c + h_c + ddcaACP_c --> co2_c + 3omrsACP_c + ACP_c'
unknown metabolite 'malACP_c' created
unknown metabolite 'h_c' created
unknown metabolite 'ddcaACP_c' created
unknown metabolite 'co2_c' created
unknown metabolite '3omrsACP_c' created
unknown metabolite 'ACP_c' created
You could also fully define the metabolites first on the model and then build the reaction.
Hope that helps,
Moritz