开发者社区> 问答> 正文

导入mysqldb,将数据插入mysql,出错,请问能能怎么解决?? 报错

导入mysqldb,将数据插入mysql,出错,请问能能怎么解决?? 400 报错

在python2.6下,连接数据库,插入数据时出错,出错信息:

File "/usr/lib/python2.6/site-packages/MySQL_python-1.2.3-py2.6-linux-i686.egg/MySQLdb/cursors.py", line 157, in execute
query = query.encode(charset)
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 32-33: ordinal not in range(256)

请问该怎么解决。

数据建表:

create table user( id int(4) not null primary key auto_increment, name char(20))DEFAULT CHARSET=utf8;

python 语句:

insert_sql = 'insert into user (name) values(\'%s\')'%myself.name
cur.execute(insert_sql)

 

展开
收起
优选2 2020-06-04 21:19:08 769 0
1 条回答
写回答
取消 提交回答
  • connect的时候指定charset=utf8

    下面那句insert最好改成

    insert_sql = 'insert into user (name) values(\'%s\')'

    cur.execute(insert_sql,( myself.name,))

    ######感谢!connect时需指定编码######数据库要用UTF8编码哦,你似乎没有######

    数据库编码:

    my.chf设置:

    [mysqld]
    datadir=/home/mysql/data
    socket=/home/mysql/server/mysql.sock
    user=mysql
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    default-character-set=utf8
    
    
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    
    [mysql]
    socket=/home/mysql/server/mysql.sock
    
    [client]
    socket=/home/mysql/server/mysql.sock
    default-character-set=utf8

    ######cur.execute("insert into user (name) values  (%s)", [myself .name])
    2020-06-05 11:38:55
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像