Извините, я уже видел ответ на вопрос, но не могу решить проблему. Я пытаюсь правильно кодировать свои столбцы SQL, чтобы он принимал смайлики:
def create_table():
op = '''CREATE TABLE conversation (
text TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL,
intent TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin,
entities TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin,
reply TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL
)'''
cursor.execute(op)
def insert_message(text, intent, entities, reply):
try:
#avoid using placeholders to prevent SQL injection, will pass text, intent and entities to transaction_builder() instead
sql = """INSERT INTO conversation (text, intent, entities, reply) VALUES (%s, %s, %s, %s)"""
transaction_builder(sql, text, intent, entities, reply)
except Exception as e:
print ('error is', str(e))
with open('C:/Users/ELITEBOOK/documents/github/chatbot/chatbot/bot/robot_text.txt','r') as table:
for robo_line in table.readlines():
message_reply = robo_line
message_intent = ''
message_entities = ''
insert_message(message_text, message_intent, message_entities, message_reply)
Некоторого кода не хватает, но это важно. Мне кажется, что кодировка должна быть установлена, но похоже, что это не так. Извините, если это дубликат
редактировать:
Отслеживание
1366 (HY000): Incorrect string value: '\xF0\x9F\x98\x81\xF0\x9F...' for column 'reply' at row 1
Так что же происходит, когда вы выполняете свой код? Вы получаете сообщение об ошибке при выполнении SQL-запроса?
Да, когда я запускаю этот код в своей оболочке, я получаю сообщение об ошибке при попытке вставить в базу данных с
insert_message
Пожалуйста, не могли бы вы поделиться полным сообщением об ошибке Traceback? Вы можете добавить его к вопросу для удобства чтения. Не забудьте отформатировать его как блок кода.
Только что внес изменения, мне показалось, что для столбцов не установлена правильная кодировка. И я думал, что исправил это. Я беру строки из набора данных, который нашел на Kaggle, в нем оказалось много смайликов.
Этот ответ SO может быть полезен.
Я тоже посмотрел на это, я проверил свою таблицу, и
character_set_result
,connection_set_client
иcharacter_set_result
все установлены наutf8mb4
Другие случайные заметки о Python: mysql.rjweb.org/doc.php/charcoll#python Укажите
SHOW CREATE TABLE
иSHOW VARIABLES LIKE 'char%';