sqlalchemy 使用pymysql连接mysql 1366错误

一、错误情况 mysql 5.7.2

\python35\lib\site-packages\pymysql\cursors.py:166: Warning: (1366, "Incorrect string value: ‘\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...‘ for column ‘VARIABLE_VALUE‘ at row 480")
  result = self._query(query)
今天在使用ORM链接数据库时遇到到了这个错误,使用的是sqlalchemy(mysql+pymysql)可以正常插入数据,不管是在mysql客户端SQL语句,还是orm下,但是错误只有orm查询数据时给出。在网上看了很多,我本身数据库my.ini如下默认default-character-set=utf8  ,本身也不是插入中文出错
.......
 # *** upgrade to a newer version of MySQL.

 [client]

 default-character-set=utf8

 [mysqld]

 port=3306

 basedir ="G:\mysql"
......

1.1 检查自己Mysql配置

my.ini 如上
你要确认自己字符编码还可以使用命令
mysql> show variables like ‘%char%‘;
查看自己编码

1.2 python的编码也为utf-8

二、问题所在

作者猜测可能是Mysql驱动,以前在廖雪峰网站看mysql时廖雪峰网站

有个操作:安装模块
pip install mysql-connector-python
本人亲测不建议加上参数--allow-external 直接pip安装
以下为原文:

由于MySQL服务器以独立的进程运行,并通过网络对外服务,所以,需要支持Python的MySQL驱动来连接到MySQL服务器。MySQL官方提供了mysql-connector-python驱动,但是安装的时候需要给pip命令加上参数--allow-external:

pip install mysql-connector-python--allow-external mysql-connector-python

如果上面的命令安装失败,可以试试另一个驱动:
pip install mysql-connector

三、解决办法

第一步:

如上第一步命令行下安装模块:mysql-connector-python
pip install mysql-connector-python
或官网下载:
到MySQL官网下载并安装mysql-connector-python:https://dev.mysql.com/downloads/connector/python/

第二步:

将连接引擎的:mysql+pymysql
engine = create_engine("mysql+pymysql//user:[email protected]/{data_base}",encoding=‘utf-8‘)
修改为:mysql+mysqlconnector
engine = create_engine("mysql+mysqlconnector//user:[email protected]/{data_base}",encoding=‘utf-8‘)

就是将pymysql连接数据库换成了,官方的连接引擎!然后问题解决了!

原文地址:https://www.cnblogs.com/ExMan/p/10312196.html

时间: 2024-07-31 02:43:21

sqlalchemy 使用pymysql连接mysql 1366错误的相关文章

django1.6.x(python3.3)使用pymysql连接mysql

1.安装 pymysql,地址:https://code.google.com/p/pymysql/ 2.安装django 然后执行 django-admin.py startproject mysite 3.在project的__init__.py中加如下面的语句 try: import pymysql pymysql.install_as_MySQLdb() except ImportError: pass 4.运行python manage.py runserver 即可. django1

MySQL 1366错误解决办法

MySQL 1366错误大致描述如下 SQL Error: 1366: Incorrect string value: "xE8xAFxA6xE7xBBx86…" for column "address" at row 1 解决办法:检查数据库此字段的字符集与整理字符集是否与SQL语句传递数据的字符集相同:不相同则会引发MySQL1366错误. 修改MySQL该字段的字符集与整理规则即可.假设数据表为phplamp, SQL语句的字符集为utf8,出错的字段为add

【问题解决】连接mysql 8错误:authentication plugin 'caching_sha2_password

在刚安装好mysql8,使用native连接的时候报错 authentication plugin 'caching_sha2_password'... 首先确保服务已开启,然后通过cmd命令进入mysql的localhost数据库 mysql -hlocalhost -uroot -p123456 然后进入mysql数据库 use mysql; 修改密码 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY

python基础学习24----使用pymysql连接mysql

使用pymysql连接mysql 安装pymysql pymysql安装可以通过两种方式 使用pip安装 首先简单说一下pip的使用方法 获取帮助 pip --help 升级 pip pip install -U pip 安装包 pip install SomePackage 卸载包 pip uninstall SomePackage 升级指定的包 pip install -U SomePackage 搜索包 pip search SomePackage 查看指定包的详细信息 pip show

Python3中使用PyMySQL连接Mysql

在Python2中连接Mysql数据库用的是MySQLdb,在Python3中连接Mysql数据库用的是PyMySQL,因为MySQLdb不支持Python3.因为web.py与Django中连接数据库默认是用MySQLdb,所以在Python3中连接数据库会报错:No module named 'MySQLdb'.这时候怎么处理呢? 针对web.py来说,在.py文件中增加两行代码:import pymysqlpymysql.install_as_MySQLdb() 针对Django来说,在站

python3.4怎么连接mysql pymysql连接mysql数据库

本文介绍了python3 4连接mysql数据库的方法,在python3 4中使用原来python2 7的mysqldb已不能连接mysql数据库了,可以使用pymysql. 在python3.4中使用原来python2.7的mysqldb已不能连接mysql数据库了,可以使用pymysql,来完成连接mysql的重任. 具体步骤: 序号 描述1 去github上下载pymysql的安装包pymysql https://github.com/PyMySQL/PyMySQL2 解压到某个盘符下3 

VC连接mysql数据库错误:libmysql.lib : fatal error LNK1113: invalid machine 解决方法

VC连接MySQL的配置过程在上一篇博文中,不过当你设置好,以为万事大吉的时候,运行却出现这个错误:libmysql.lib : fatal error LNK1113: invalid machine type. 无效的机器类型,真的是很让人捉急. 发生这个错误的原因是,我在win8.1上安装的是64bit的mysql服务器,而我编译32位的VC程序,连接的是64位的libmysql.lib库,所以会产生 “无效的机器类型(invalid machine type)”的错误提示. 对于这个“e

python3使用PyMysql连接mysql数据库

python语言的3 x完全不向前兼容,导致我们在python2 x中可以正常使用的库,到了python3就用不了了 比如说mysqldb目前MySQLdb并不支持python3 python语言的3.x完全不向前兼容,导致我们在python2.x中可以正常使用的库,到了python3就用不了了.比如说mysqldb 目前MySQLdb并不支持python3.x , Python3.x连接MySQL的方案有:oursql, PyMySQL, myconnpy 等 下面来说下python3如何安装

使用pymysql连接MySql数据库

MySQLdb安装失败了,直接使用pymysql,安装了pymysql. 并学习了使用使用pymysql创建数据库和表,并插入数据. __author__ = 'Administrator' import pymysql try: conn= pymysql.connect(host='localhost', port=3306, user='root', passwd='',charset='UTF8') #conn=pymysql.connect(host='localhost',user=