sqlalchemy插入数据到mysql异常
Posted scnuwang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlalchemy插入数据到mysql异常相关的知识,希望对你有一定的参考价值。
1. 插入中文报错:
在数据库名称后面添加?charset=utf8
engine = create_engine("mysql+pymysql://root:[email protected]/data?charset=utf8", echo=True)
2. 正常插入,但是提示以下警告:
2018-06-06 16:28:39,789 INFO sqlalchemy.engine.base.Engine SHOW VARIABLES LIKE 'sql_mode'
2018-06-06 16:28:39,790 INFO sqlalchemy.engine.base.Engine {}
D:\\PythonProjects\\venv\\lib\\site-packages\\pymysql\\cursors.py:170: Warning: (1366, "Incorrect string value: '\\\\xD6\\\\xD0\\\\xB9\\\\xFA\\\\xB1\\\\xEA...' for column 'VARIABLE_VALUE' at row 480")
result = self._query(query)
代码如下:
from sqlalchemy import Column,Integer,String,DECIMAL,create_engine,DateTime
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Product(Base):
__tablename__ = 'cj_product_test'
id = Column(Integer,primary_key=True,autoincrement=True)
original_id = Column(String(255))
product_name = Column(String(255))
def __repr__(self):
return "<Product(id='%d', original_id='%s', product_name='%s')>" % (self.id, self.original_id, self.product_name)
# 插入中文会报错,需要在数据库名称后面添加?charset=utf8
engine = create_engine("mysql+pymysql://root:[email protected]/data?charset=utf8", echo=True)
Product.metadata.create_all(engine)
DBSession = sessionmaker(bind=engine)
product = Product(original_id='432143',product_name='施华洛世奇')
session = DBSession()
session.add(product)
session.commit()
session.close()
MySQL自生的一个BUG:
https://www.cnblogs.com/pengyusong/p/6008936.html
https://bugs.mysql.com/bug.php?id=82414
以上是关于sqlalchemy插入数据到mysql异常的主要内容,如果未能解决你的问题,请参考以下文章
每当 MySQL 抛出警告时,我如何通知 sqlalchemy 引发错误?
使用 SQLAlchemy 和 Pandas 插入数据 - Python
插入到自动映射生成的 ORM 时出现 SQLAlchemy InvalidRequestError