我使用以下 Python 代码在 MySQL 表中插入一行:
city = City()
city.country_id = connection.globe.session.query(Country).\
filter(Country.code == row[1]).one().id
city.name = row[3].decode('latin1').encode('utf8')
city.province = row[2].decode('latin1').encode('utf8')
[city.latitude, city.longitude] = [row[5], row[6]]
connection.globe.session.add(city)
connection.globe.session.commit()
在我的本地机器上进行测试时,正确插入了一个示例行:
75,209,36,Radès,36.7681,10.2753
使用来自不同机器 (AWS) 的相同代码会导致行略有不同:
75,209,36,Radès,36.7681,10.2753
整个 MySQL 数据库都配置为使用 utf8mb4 编码,实际上我花了很多时间相信 MySQL 应该为编码错误负责。但是由于我一直在不同的机器上运行它,我注意到相同的代码可以在一台机器上运行,但不能在另一台机器上运行。
由于正在执行相同的代码,我不相信我的 Python 代码是罪魁祸首。
Linux 和我在这里缺少的字符集/字符编码有什么奇怪的地方吗?
编辑:我应该注意到它们连接到同一个 RDS 数据库,这意味着数据库在两个插入之间是一致的。