最近线上遇到一个问题,python定时任务运行到一半时就因为OOM被kill退出。
程序主要是利用MySQLdb插件导出db流水数据,流水数据比较大,有430w条记录,因此分多次加载数据。
db = MySQLdb.connect(host, user, pwd, db, port) curs = db.cursor() # 由于数据较大,不能通过fetchall()一次性读取 rec = curs.fetchone() while rec: print rec rec = curs.fetchone()
但是做了上述优化后,脚本仍然会因为OOM被kill。gdb调试发现程序在不停的读数据,不是应该通过cursor每次一条条读取吗?
MySQLdb提供了四种游标:
- Cursor/DictCursor 默认Cursor,将结果存储成Tuple; 两者都是将数据缓存到Client侧,然后从内存中fetch。
- SSCursor/SSDictCursor 实现在Server端存储数据,fetchone()时从服务端获取一条记录。
db = MySQLdb.connect(host, user, pwd, db, port, cursorclass=MySQLdb.cursors.SSCursor) curs = db.cursor()
相关推荐
连接MySQLdb1-MySQLdb-1.2.5.zip MySQLdb1-MySQLdb-1.2.5.zip MySQLdb1-MySQLdb-1.2.5.zip MySQLdb1-MySQLdb-1.2.5.zip
这个包里有两个包,都可以用来在windows上安装python-MySQLdb,选择其中一种就可以!我比较喜欢用-master那个包,因为只要解压后执行python setup.py install就可以了。另一个包在安装时若出现找不到python2.7的安装...
MysqlDB pymysql操作类库
官方mysqldb用户手册,英文版,方便使用
python2.6-MySQLdb,包括python2.6安装包、MySQLdb for python2.6安装包、MySQLdb使用配置,为想学习Python操作mysql数据库的同学提供了极大的方便。。。
MySQLdb 1.2.3 for Python 2.7 (Windows)
鸟人封装的MySQLdb操作接口,包含读写分离、断线重连的逻辑,对于具体应用可以继承和扩展
windows环境下配置python3 mysqldb
python安装模块MySQLdb时,提示python2.7未安装,安装失败时,命令行python register.py,然后重新安装MySQLdb,就能正确安装。
MySQLdb模块英文版使用手册,内置搜索功能,方便查找定位使用语法
windows mysqldb for python2.5 in windows
封装了mysqldb方法方便调用。直接在脚本引用
Python的mysql插件,该包是64位的。
python3.6使用MySQLdb连接mysql需要mysqlclient-1.3.12-cp36-cp36m-win_amd64.whl
MySQL-python-1.2.5.win-amd64-py2.7
MySQLdb __init__.py converters.py mysql python
python连接mysql数据库需要MySQLdb win7 64位安装好就可以用了。 具体代码可以参考:http://www.runoob.com/python/python-mysql.html
mysqldb-windows64-python的连接mysql的需要的exe文件
2021_w_.1.python 驱动MySQLdb(create_engine)代码
此资源为pthon和MySQLdb进行数据库开发的安装文件,有32位和64位版本