Usando SQLAlchemy e pymysql, como posso configurar a conexão para utilizar utf8mb4?

Eu descobri (da maneira mais difícil) queConjunto de caracteres UTF8 do MySQL é de apenas 3 bytes. Um pouco de pesquisa mostra que eu posso consertar isso alterando as tabelas para utilizar outf8mb4 agrupamento e obter UTF total de 4 bytes.

Eu fiz isso. Meu banco de dados, tabelas e colunas foram todosALTERpara utilizar esse conjunto de caracteres. No entanto, ainda recebo esta mensagem se tiver dados com pontos de código unicode maiores que U + FFFF:

Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='"

Descobri que tenho as seguintes configurações:

> show variables like '%collation%';

collation_connection  utf8_general_ci
collation_database    utf8mb4_general_ci
collation_server      utf8mb4_general_ci

ocollation_server foi definido fazendo alterações emmy.cnf. A minha pergunta é como altero a conexão? Atualmente, conecto ao banco de dados usando o SQL Alchemy e o pymysql assim:

connect_string = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(DB_USER, DB_PASS, DB_HOST, DB_PORT, DATABASE)
engine = create_engine(connect_string, convert_unicode=True, echo=False)
session = sessionmaker()
session.configure(bind=engine)

O que posso fazer para mudar deutf8_general_ci parautf8mb4_general_ci ao conectar via SQL Alchemy?

questionAnswers(1)

yourAnswerToTheQuestion