转自: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
i
writers.writerows([i])
csvfile.close()
|
def main():
p = Handle()
p._do()
p._release_db()
if __name__=="__main__":
main()
csv文件结构如下图
