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("插入成功")
実行後に警告がスローされます。
ドライバは一時的に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")
実行後に正常に挿入され、すべて正常です