解决SQLAlchemy MySQL Oracle 中文执行乱码问题

在使用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')

你可能感兴趣的:(解决SQLAlchemy MySQL Oracle 中文执行乱码问题)