【python案例】将mysql数据库内容分割为小CSV文件
上次写了将csv文件分割成小文件,但是csv中对源文件不好操作,所以我将源文件csv导入到mysql中,然后将mysql中的数据分割成小文件。
分割的处理逻辑是一样的,不一样的是循环读取出excel文件。
# -*- coding: utf-8 -*-
#
import os
import sys
import MySQLdb
import MySQLdb.cursors
import csv
import random
# 初始化编码
reload(sys)
sys.setdefaultencoding('utf-8')
# 和本地的数据库建立连接
host = '127.0.0.1'
user = 'root'
psd = ''
db = 'spider'
cha = 'utf8'
db = MySQLdb.connect(host=host,user=user,passwd=psd,db=db,charset=cha)
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 查询语句
sql = "SELECT * FROM boohoo"
cursor.execute(sql)
results= cursor.fetchall()
#mysql返回的是元祖,需要转换成数组
results=list(results)
random.shuffle(results)
# results=cursor.fetchone()
i=j=1
for row in results:
if i%102==0:
print u"CSV文件source%s已生成成功" % j
j+=1
# 写入csv
csv_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),'csv','source'+str(j)+'.csv')
csv_file = file(csv_path, 'ab+')
csv_write = csv.writer(csv_file)
# 文件不存在则写入头部
if os.path.getsize(csv_path)==0:
csv_write.writerow(['v_products_image','v_products_name_1','v_products_description_1','v_products_price','v_categories_name_1','v_categories_name_2'])
# 写入数据
csv_write.writerow([row[1],row[2],row[3],row[4],row[5],row[6]])
csv_file.close()
i+=1
# 关闭连接
db.close()
这里用random.shuffle(results)结果进行了随机,注意mysql返回的是元祖,需要转换成数组,这样子才能修改数据。
看看我们运行的结果。

【python案例】将大CSV文件分割为小CSV文件 【python案例】运用PIL在图片加上数字水印的方法