I have been able to figure out the answer, so just posting it for other users if they come across this problem.
A c_char is a one-byte value, not a Unicode string. Set ID = bytes(ID, 'utf8')[0] (or use a different 8-bit character mapping than 'utf8', such as 'latin-1'). Then you can call Create(ID).
By the way, assigning ID to c_char only gives you another reference to c_char, and then you immediately reassign ID to the returned string from input. The only time I see this is when people are working with ctypes. It's like the brain gets stuck in static typing mode.