ubuntu中mysql中文乱码及用python3.x调用
首先声明解决方法也是网上找来的,知识自己记下来以防以后用到。 ubuntu版本是14.04使用apt-get命令安装mysql
sudo apt-get install mysql-server
好了之后使用mysql -u root -p检查是否能正常启动
mysql -u root -p
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 37 Server version: 5.5.35-1ubuntu1 (Ubuntu) Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
正常情况下会显示这样。
之前遇到一种情况是向mysql中存入的数据中含有中文是会乱码,郁闷了很久。
在mysql中 使用 show variable like "character%"命令查看字符格式
mysql> show variables like "character%" -> ; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
我的这个是改过之后的,未修改情况下,character_set_database的编码方式并不是utf8
要修改编码方式就要修改my.cnf文件。
sudo gedit /etc/mysql/my.cnf
其中在[client]下加 default-character-set=utf8
在[mysqld]下添加 character-set-server=utf8 collation-server=utf8_general_ci
之后保存退出
然后使用
sudo service mysql restart
重启mysql。
之后Mysql就能正常存储中文了。
##############################################################################################
之前用 的是python2.7,调用mysql的话可以使用MySQLdb,后来python升到3.5之后,发现MySQLdb不能用,遂google之,找到解决方法。
有一个pymysql可以供python调用mysql
安装也很简单。
首先 https://pypi.python.org/pypi/PyMySQL3 中下载安装包
下载好之后解压缩,进到包的文件夹目录,然后安装
python setup.py install
安装好之后进到python交互模式
python Python 3.5.0 (default, Sep 17 2015, 00:00:00) [GCC 4.8.4] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import pymysql >>>
这样就算成功了。