pymysql常见问题

一、Python中pymysql出现乱码的解决方法

通常来讲,在使用mysql最麻烦的问题在于乱码。python

查看mysql的编码:mysql

show variables like 'character_set_%';

能够看到以下结果:sql

character_set_client为客户端编码方式;
character_set_connection为创建链接使用的编码;
character_set_database数据库的编码;
character_set_results结果集的编码;
character_set_server数据库服务器的编码;数据库

只要保证以上四个采用的编码方式同样,就不会出现乱码问题服务器

而后能够直接在这里设置mysql的编码。session

set character_set_client = xxxxx

这样就将客户端编码修改过来了。this

可是,对于已经创建好的数据库和数据表,编码仍是没有变的,仍是要使用alter命令去更改对应的编码编码

可是,即使修改了数据库的编码,在python中仍是会存在存入数据库的时候的乱码问题,解决方法就是在连接数据库的时候指定编码。例如:spa

sql_con = MySQLdb.connect(host=MYSQL_ADDR , user=MYSQL_USER , passwd=MYSQL_PWD , db=MYSQL_DB , charset="utf8")

这就指定了客户端的编码是utf8.而后就解决了乱码问题。code

二、mysql总是中止运行该怎么解决

 

MySQL 5.7.9版本sql_mode=only_full_group_by问题

 

三、MySQL 5.7.9版本sql_mode=only_full_group_by问题

用到GROUP BY 语句查询时com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'col_user_6.a.START_TIME' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by错误

解决方法 (修改全局):执行set global   sql_mode = ''; 把sql_mode 改为非only_full_group_by模式。验证是否生效 SELECT @@GLOBAL.sql_mode 或 SELECT @@sql_mode

 

执行(只是修改会话级别的,只是当前会话生效)set  session sql_mode = ''; 把sql_mode 改为非only_full_group_by模式。验证是否生效 SELECT @@GLOBAL.sql_mode 或 SELECT @@sql_mode

 

 

 

 

相关文章
相关标签/搜索