Как применить utf8mb4 при создании таблицы с помощью to_sql? - PullRequest
0 голосов
/ 29 мая 2019

Я импортирую некоторые данные из API в Python, форматирую и сохраняю их в базу данных MySQL с помощью to_sql.

results, types, valid = self.process_data(data, [])
        if valid:
            results.to_sql(
                con=self.db.connection,
                name="degreed_" + method,
                if_exists="replace", 
                index=False,
                dtype=types,
            )

В моем соединении я указал utf8mb4 в качестве charset:

self.connection = create_engine(
            'mysql+mysqlconnector://{0}:{1}@{2}/{3}?charset=utf8mb4'.
            format(database_username, database_password, database_ip, database_name))

и в моих типах у меня есть текстовые столбцы как:

NVARCHAR(length=500, collation='utf8mb4_bin').

Однако я все еще получаю сообщение об ошибке:

COLLATION 'utf8mb4_bin' is not valid for CHARACTER SET 'utf8' 

В MySQL мой character_set_client имеет значение utf8mb4 итаблица символов по умолчанию - utf8mb4.Почему набор символов utf8?

Извиняюсь, если я делаю здесь что-то глупое, я совершенно новичок в sqlalchemy и mysql в целом.

1 Ответ

0 голосов
/ 29 мая 2019

Оказывается, проблема заключалась в том, что я использовал NVARCHAR вместо VARCHAR, поэтому результат был приведен как UTF8.

...