Wie kann ich mithilfe von SQLAlchemy und pymysql die Verbindung so einstellen, dass utf8mb4 verwendet wird?

Ich entdeckte (auf die harte Tour), dass MySQLs UTF8-Zeichensatz ist nur 3 Bytes. Nachforschungen haben ergeben, dass ich dieses Problem beheben kann, indem ich die Tabellen ändere, um das @ zu verwendeutf8mb4 Kollatierung und erhalten die vollen 4 Bytes UTF sein sollte.

Ich habe es getan. Meine Datenbank, Tabellen und Spalten waren alleALTERed, um diesen Zeichensatz zu verwenden. Ich erhalte diese Meldung jedoch weiterhin, wenn ich Daten habe, deren Unicode-Codepunkte größer als U + FFFF sind:

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

Ich habe festgestellt, dass ich die folgenden Einstellungen habe:

> show variables like '%collation%';

collation_connection  utf8_general_ci
collation_database    utf8mb4_general_ci
collation_server      utf8mb4_general_ci

Dascollation_server wurde festgelegt, indem Änderungen an @ vorgenommen wurdmy.cnf. Meine Frage ist, wie ändere ich die Verbindung? Ich verbinde mich derzeit mit SQL Alchemy und pymysql wie folgt mit der Datenbank:

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)

Was kann ich tun, um von @ zu wechselutf8_general_ci zuutf8mb4_general_ci bei der Verbindung über SQL Alchemy?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage