python提取百万数据到csv文件


转自:http://www.2cto.com/kf/201311/258112.html

今天有需求,需要把系统所有用户注册的id和邮箱等信息导出来提供给他们,在mysql里面count了下,大概有350万左右

就尝试了下用python实现,顺带练习下python写csv的功能,本来想用工具的,但想了下速度会很慢,
整个导出过程大概就3分钟左右,还是蛮快的,毕竟有三百多万,导完后有150M左右
下面是我的脚本deal_csv.py,由于需要连接mysql 数据库,脚本依赖MySQLdb模块
 
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
__author__ = 'chunyang.wu' 
# -*- coding: utf-8 -*- 
#!/usr/bin/env python 
import MySQLdb 
import os 
os.environ[ 'NLS_LANG' ] = 'SIMPLIFIED CHINESE_CHINA.UTF8' 
import sys 
reload (sys) 
sys.setdefaultencoding( 'utf-8'
import csv 
   
class Handle: 
     def __init_db( self ): 
         self ._mysql_db = MySQLdb.connect(host = "172.16.1.55" ,user = "test" ,passwd = "123456" ,port = 3306 ,db = "test" ,unix_socket = "/tmp/mysql5.sock"
         self .mysql_cur = self ._mysql_db.cursor() 
         self .seq = 0 
   
     def __init__( self ): 
         self .__init_db() 
   
     def _release_db( self ): 
         self .mysql_cur.close() 
         self ._mysql_db.close() 
   
     def _do( self ): 
         self .mysql_cur.arraysize = 50 
         select_sql = "SELECT id,email,FROM_UNIXTIME(create_time) AS create_time FROM test.tbl_member " 
         print select_sql 
         self .mysql_cur.execute(select_sql) 
         count = 0 
         csvfile = file ( 'all_user.csv' , 'wb'
         print dir (csv) 
         writers = csv.writer(csvfile) 
         writers.writerow([ 'uid' , 'email' , 'createtime' ]) 
         while 1
             lines = self .mysql_cur.fetchmany( 50
             if len (lines) = = 0
                 break 
             for i in lines: 
                 print
                 writers.writerows([i]) 
         csvfile.close() 

 

 
  
def main():  
    p = Handle()  
    p._do()  
    p._release_db()  
  
if __name__=="__main__":  
    main()  
csv文件结构如下图

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM