python插入mysql数据遇到fail to insert record into table

python的代码:

# -*- coding: utf-8 -*-

import pymysql
from datetime import datetime

。。。。。。


    sql = "insert into employee(first_name, last_name, age, sex, income, create_time) values('%s', '%s',  %d, '%c', %d, '%s')" % ('四', '李', 21, 'F', 100000, datetime.now())
。。。。

运行后出现fail to insert record into table,后来发现是MySQL默认编码是Latin1,要支持中文,需要换编码格式utf8。解决方案:

方案1:

创建数据库的时候在后面直接定义好编码格式

sql = '''create table employee(
             first_name char(20) not null,
             last_name char(20),
             age int,
             sex char(1),
             income float,
             create_time datetime)
             engine=innodb default charset=utf8;'''

方案2:

我是在windows本地装的mysql,所以在my.ini文件上进行配置:

 

[client]
port = 3306
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
server-id=1
basedir=F:\\work\\mysql-5.7.11-winx64
datadir=F:\\work\\mysql-5.7.11-winx64\\data
port = 3306
#字符集设置
character-set-server=utf8
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
#二进制日志设置
#log-bin=F:\\work\\mysql-5.7.11-winx64\\log\\binlogdir\\binlog
#expire_logs_days=10
#max_binlog_size=100M
#binlog-do-db=company
#binlog-ignore-db=mysql
#错误日志设置
log-error=F:\\work\\mysql-5.7.11-winx64\\log\\errlogdir\\errlog
#通用查询日志设置
#log-output=FILE
#general-log=1
#general_log_file=F:\\work\\mysql-5.7.11-winx64\\log\\logdir\\generallog
#设置慢查询日志
#slow_query_log=on
#slow_query_log_file=F:\\work\\mysql-5.7.11-winx64\\log\\slowlogdir\\slowlog
#阈值默认为10秒
#long_query_time=10  

我最终把两种方案都同时改进了,问题解决
 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值