Så det visar sig att detta har besvarats några gånger, jag hade helt enkelt inte riktigt rätt Google-fu för att hitta de befintliga frågorna.
- Python, konvertera 4-byte char för att undvika MySQL-felet "Incorrect string value:"
- Varning väcks genom att infoga 4-byte unicode till mysql
Tack till Martijn Pieters , lösningen kom från världen av reguljära uttryck, närmare bestämt denna kod (baserat på hans svar på den första länken ovan):
import re
try:
# UCS-4
highpoints = re.compile(u'[\U00010000-\U0010ffff]')
except re.error:
# UCS-2
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
# mytext = u'<some string containing 4-byte chars>'
mytext = highpoints.sub(u'\u25FD', mytext)
Tecknet jag ersätter med är WHITE MEDIUM SMALL SQUARE (U+25FD)
, FYI, men kan vara vad som helst.
För de som inte känner till UCS, som jag, är detta ett system för Unicode-konvertering och en given version av Python kommer att innehålla stöd för antingen UCS-2- eller UCS-4-varianten, som var och en har olika övre gränser för teckenstöd.
Med tillägget av den här koden verkar strängarna bestå i MySQL 5.1 bra.
Hoppas detta hjälper någon annan i samma situation!