我用的dialect是pymysql,先看了一下pymysql,发现果然在这一层就已经出问题了
如果用纯pymysql的话,在连接数据库的时候要加上charset='utf8'
conn = pymysql.connect(host='localhost', user='root', db='db', charset='utf8')
然后在sqlalchemy这一层的做法是在dsn字符串后面加上?charset=utf8
engine = create_engine('mysql+pymysql://%s:%s@%s/%s?charset=utf8' % (
user, passwd, host, database), echo=True)