最近用tushare获取股票tick数据存入mysql发现“买盘”“卖盘”在mysql中是乱码。
解决方法如下:
第一步,配置mysql
由于新版本的mysql(我用的是5.7.22)的配置文件是/etc/mysql/mysql.conf.d/mysqld.cnf,
根据mysqld.cnf文件中内容提示,将mysqld.cnf拷贝到/etc/mysql下,同时文件名改为my.cnf.
在my.cnf文件中添加
[client]
default-character-set=utf8
在[mysqld]下添加
character-set-server=utf8
然后保存,重启mysql。
验证,输入命令:show variables 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/ |
+--------------------------+----------------------------+
第二步:create_engine参数设置
在使用sqlalchemy创建数据引擎存数据到mysql时,代码如下:
df = ts.get_tick_data('600848', date='2014-12-22')
engine = create_engine('mysql+pymysql://user:passwd@127.0.0.1/test4?charset=utf8')
df.to_sql('tick_data10',engine)
如果写为
df = ts.get_tick_data('600848', date='2014-12-22')
engine = create_engine('mysql+pymysql://user:passwd@127.0.0.1/test4',encoding='utf8')
df.to_sql('tick_data10',engine)
在mysql中,中文依旧是乱码。