我正在从Python中的API导入一些数据,将其格式化并使用to_sql将其保存到MySQL数据库。

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指定为字符集:

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来说我还是很新的。

最佳答案

原来的问题是我使用的是NVARCHAR而不是VARCHAR,因此结果被转换为UTF8。

关于python - 如何在使用to_sql创建表时强制使用utf8mb4?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56358632/

10-11 07:42