在使用SQLAlchemy 往數據庫插入數據時,提示
UnicodeEncodeError: 'ascii' codec can't encode characters in position 38-39: ordinal not in range(128)
這個是因為設置編碼的問題,下面分別說下Oracle 和MySQL解決方案.
- Oracle
import os
os.environ["NLS_LANG"] = "GERMAN_GERMANY.UTF8"
- MySQL
URI = f"mysql+pymysql://{USER}:{PASSWORD}@{HOST}:{PORT}/{db}?charset=utf8"
以上就是解決方案!
如果還是不可以,嘗試在create_engine 時 添加 encoding
engine = create_engine(URI, convert_unicode=False,
pool_recycle=10,
pool_size=50,
echo=True,
encoding='utf8')