1.工具環(huán)境
- Pycharm2018.3
- python3.7
- Anaconda3.7
- mysql5.7
- sqlalchemy1.2.15
2.問(wèn)題描述
在插入數(shù)據(jù)的時(shí)候拋出以下異常:
Warning: (1366, "Incorrect string value: '\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...' for column 'VARIABLE_VALUE' at row 484")
result = self._query(query)
3.相關(guān)代碼
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
Base = declarative_base()
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String(255))
sex = Column(String(8))
if __name__ == "__main__":
engine = create_engine("mysql+pymysql://root:password@localhost/my_db")
Session = sessionmaker(bind=engine)
user= User(name="測(cè)試", sex="男")
session = Session()
session.add(user)
session.commit()
session.close()
print("插入成功")
執(zhí)行后拋出警告

image.png
驅(qū)動(dòng)暫時(shí)使用的是pymysql,問(wèn)題就在這里,各種網(wǎng)上搜索解決方案,基本上都是說(shuō)字符集的不統(tǒng)一導(dǎo)致的,解決方法都是修改數(shù)據(jù)庫(kù)和pycharm字符集,保持統(tǒng)一,但都沒(méi)有效果,依然拋出異常
4.解決方法
1.安裝mysql-connector-python驅(qū)動(dòng)
conda install mysql-connector-python
2.修改代碼
engine = create_engine("mysql+pymysql://root:password@localhost/my_db")
改為:
engine = create_engine("mysql+mysqlconnector://root:password@localhost/my_db")
執(zhí)行后插入成功,一切正常

image.png