python中mysql模块的内存泄露和中文乱码详解

mysql-python的连接时,默认大家会写成

con=MySQLdb.connect(user='xxx',passwd='xxx',host='xxx',port=6600,charset='gbk')

登录后复制

一旦指定了”gbk”,默认mysql-python会设定use_unicode=True。结果是mysql-python会利用python自己的 codec模块去做字符解码工作,但实际中发现mysql库gbk编码字符集比python的gbk编码集大。一些在mysql里可以存储的字符,拿 python的codec去解析就会抛错。更严重的问题是,在mysql-python1.2.3之前,use_unicode=True即让 mysql-python解码这块存在内存泄露的bug。解码出来所有数据库字符串经过mysql-python出来都是unicode object,要输出到文件需要再次编码。

解决方法是强制指定use_unicode=False。即:

con=MySQLdb.connect(user='xxx',passwd='xxx',host='xxx',port=6600,charset='gbk',use_unicode=False)

登录后复制

这样既不会有内存泄露,也不需要在输出文件时进行编码。也回避了python的codec不能解析mysql gbk里面存放的字符串的问题。 最后对于mysql4,我们可以将charset参数留空:

con=MySQLdb.connect(user='xxx',passwd='xxx',host='xxx',port=6600,use_unicode=False)

登录后复制

这样就完美解决了这个问题,哈哈

立即学习“Python免费学习笔记(深入)”;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2284212.html

(0)
上一篇 2025年2月27日 20:38:05
下一篇 2025年2月27日 20:38:17

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • python使用dbm持久字典(python微型数据库)详解

    在一些python小型应用程序中,不需要关系型数据库时,可以方便的用持久字典来存储名称/值对,它与python的字典非常类似,主要区别在于数据是在磁盘读取和写入的。另一个区别在于dbm的键和值必须是字符串类型。 1.选择dbm模块 pyth…

    编程技术 2025年2月27日
    200
  • Python生成验证码实例讲解

    在web开发中经常用到验证码,为了防止机器人注册或者恶意登陆和查询等,作用不容小觑 但是验证码其实不是一个函数就能搞定的,它需要生成图片和水印,其实每种语言都有相关的函数生成图片和文字水印。包括我熟悉的php,呵呵,今天主要来分享如何用py…

    编程技术 2025年2月27日
    200
  • 使用python发送邮件和接收邮件

    发邮件是大家工作中最常用到的。今天来看一下怎么用python来发送和接收邮件。 python实现发送和接收邮件功能主要用到poplib和smtplib模块。 poplib用于接收邮件,而smtplib负责发送邮件。 代码如下: #! /us…

    编程技术 2025年2月27日
    200
  • Python简单两步实现天气爬虫采集器

    说道爬虫大家或许感觉非常神秘,其实它没有我们想象的那么神奇(当然,google和baidu的爬虫是一场复杂和强大的,它的强大不是爬虫本身强大,而是后台的数据处理和数据挖掘算法非常强大),今天我们就来揭开它神秘的面纱。呵呵,简单两步就可以实现…

    编程技术 2025年2月27日
    200
  • python使用matplotlib绘图详解

    matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令api,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入gui应用程序中。它的文档相当完备,并且gallery页面中有上百幅缩略图,打开…

    2025年2月27日 编程技术
    200
  • python中json对象转换出错解决方法

    今天在使用python中的json转换碰到一个问题: 接收一个post的json字符串: s={“username”:”admin”,”password”:&#8221…

    编程技术 2025年2月27日
    200
  • python批量抓取美女图片

    学了python以后,知道python的抓取功能其实是非常强大的,当然不能浪费,呵呵。我平时很喜欢美女图,呵呵,程序员很苦闷的,看看美女,养养眼,增加点乐趣。好,那就用python写一个美女图自动抓取程序吧~~ 其中用到urllib2模块和…

    编程技术 2025年2月27日
    200
  • Python中map filter reduce的递归实现

    map2=lambda f,seq: [] if seq==[] else [f(seq[0])] + map2(f, seq[1:])  filter2=lambda f, seq: [] if seq==[] else ( [seq[0…

    编程技术 2025年2月27日
    200
  • 如何让python变得更快?

    python和其他脚本语言通常会被摒弃,因为它们相对于一些类似于c语言的编译型的语言来说效率很低。比如下面的斐波纳契数的例子: C语言中: int fib(int n){   if (n Python中:def fib(n):  if n …

    编程技术 2025年2月27日
    200
  • 教你用100多行写一个数据库

    本文介绍的是以为中国的it资深人士写的一个简单的数据库,没有我们使用的数据库那么强大,但是值得大家借鉴。可以用在特定环境中,更加灵活方便。 数据库的名字叫WawaDB,是用python实现的。由此可见python是灰常强大啊! 简介 记录日…

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论