我有一个将数据写入Microsoft SQL Server的应用程序。数据库的字符集为CP1252,待保存的传入数据为UTF-8。数据可能包含无法转换为CP1252的字符,插入时会抛出异常。
数据库人员说我应该强行将数据压缩到CP1252,如下所示:
some_value = some_value.encode('CP1252', 'replace')
但是SQLAlchemy会自动进行转换,我看不到强制转换的方法。
engine = sqlalchemy.create_engine('mssql+pyodbc://...'
encoding='CP1252',
convert_unicode=True,
)
保存数据至关重要,即使有一些缺少的字符也是如此。我该如何实现呢?请注意,在这种情况下我使用了大量的数据库反射。
答案 0 :(得分:1)
我没有看到问题。
some_value = some_value.encode('CP1252', 'replace').decode('CP1252')
如果some_value
实际上不是unicode字符串,而是原始UTF-8数据:
some_value = some_value.decode("utf-8").encode('cp1252', 'replace').decode('cp1252')