Вы пытаетесь написать сообщение в самом тексте запроса, заключенном в простые кавычки. Это плохо, потому что он был источником SQL атак внедрения в течение десятилетий, и рекомендуемый способ - использовать параметризованные запросы.
Но здесь, когда ваш текст содержит простую цитату, такую как "d'eau"
, запрос строка заканчивается на:
...VALUES('d'eau',...)
По крайней мере, это должно было быть ...VALUES('d''eau',...)
, удваивающее оскорбительную цитату. Это причина ошибки.
По всем этим причинам вам следует использовать параметризованный запрос:
DB_Protocole.cur.execute("INSERT INTO message (message, published_on, active) VALUES (?,NOW(),True)", [message])