- 从MySQLdb接口读取百万条以上记录的表格, 主要是要指定游标的种类, 才不会造成程序停留在执行sql语句的等待返回过程中.
有四种Cursor:
Cursor
SSCursor
DictCursor
SSDictCursor
前两种返回tuple结构, 后两种返回字典结构.
另外,带有SS前缀的Cursor是未带缓存的游标(Unbuffered Cursor),它执行命令后结果不会从MySQL server上取下来, 而是而是立即返回, 因此使用该SSCursor有两点要注意:
用fetchone() 获取每一行结果进行处理
不要使用fetchall(), 否则将会从server上取下所有数据, 同样会造成程序卡住.
使用方法有两种:
a. 在MySQLdb.connection初始化链接时指定:
1 | import MySQLdb |
b. 在Cursor构造时指定:
1 | import MySQLdb |
- 从csv文件读取大量数据, 这里要里用pandas库
以下面的数据为例
ipnum,isp,isp_id
16777216,,
16777472,电信,100017
16777728,电信,100017
16777984,电信,100017
1 | import pandas as pd |
chunksize指定了每次读取的块大小, df是迭代的DataFrame.
注意df.fillna( )并不会修改df,而是把修改后的返回.
iterrows( )方法可以返回迭代的index 和 字典形式的结果.