警告:(1366、 "列の値が正しくありません: '\\ xD6 \\ ...'

PythonはSQLAlchemy + MySQL挿入データ時間警告警告を解決します:(1366、 "列の不正な文字列値: '\ xD6 \…'…

1.ツール環境

Pycharm2018.3
python3.7
Anaconda3.7
mysql5.7
sqlalchemy1.2.15

2.問題の説明

データの挿入時に次の例外がスローされます:
警告:(1366、「行484の列 'VARIABLE_VALUE'の「不正な文字列値: '\ xD6 \ xD0 \ xB9 \ xFA \ xB1 \ xEA…'」)
結果= self._query (クエリ)

3.関連コード

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="测试", sex="男")
session = Session()
session.add(user)
session.commit()
session.close()
print("插入成功")

実行後に警告がスローされます。
image.png
ドライバは一時的にpymysqlを使用します。問題はここにあります。さまざまなオンライン検索ソリューションは、基本的に文字セットの不一致が原因です。解決策は、データベースとpycharm文字セットを変更して均一性を維持することです。 、ただし影響なし、それでも例外がスローされます

4.ソリューション

1. mysql-connector-pythonドライバーを
インストールします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")

実行後に正常に挿入され、すべて正常です
image.png

おすすめ

転載: blog.csdn.net/xiaoxiaodechongzi/article/details/103241909