• 技术文章 >常见问题 >Python常见问题

    python中读取mysql乱码怎么办?

    yangyang2020-05-21 13:47:03原创4088

    Python连接mysql数据库时,读取数据库中的中文出现乱码,所有中文都显示为问号了。

    数据库代码:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    -- 建表语句

    CREATE TABLE books (

      name varchar(50) DEFAULT NULL

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

     

    -- 插入数据

    insert into books values('万物生光辉');

    insert into books values('我亲爱的甜橙树');

    insert into books values('教父');

    insert into books values('故事');

    insert into books values('树上的男爵');

    insert into books values('罗马人的故事2');

    insert into books values('秘岛(全三册)');

    python代码:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    #!/usr/bin/env python

     

    import pymysql.cursors

     

    connection = pymysql.connect(user='用户名', passwd='密码', db='数据库名')

    cursor = connection.cursor()

    ex = cursor.execute("select name from books")

    books = cursor.fetchmany(ex)

     

    for book in books:

        print("%s" % book[0])

     

    connection.close()

    输出结果如下:

    下面我们就来看一下解决方法:

    Python文件设置编码 utf-8 (文件前面加上 #encoding=utf-8)

    MySQL数据库charset=utf-8

    Python连接MySQL是加上参数 charset=’utf8’

    读取数据后写入文件前执行编码book[0].encode(‘utf-8’)

    最后测试的时候发现只需在连接MySQL的时候加上charset=’utf8’即可,以utf-8编码格式读取数据,其他条件无需添加,也不会出现从mysql中读取的数据出现中文乱码的情况。

    更多Python知识请关注Python自学网

    专题推荐:python
    上一篇:python中的加减乘除小知识 下一篇:python怎么输出变量的值?

    相关文章推荐

    • python怎么判断图片是否为三通道?• Python中3>True的可以比较吗?• python如何做exe程序?• python如何关闭文件?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网