【python案例】将mysql数据库内容分割为小CSV文件
上次写了将csv文件分割成小文件,但是csv中对源文件不好操作,所以我将源文件csv导入到mysql中,然后将mysql中的数据分割成小文件。
分割的处理逻辑是一样的,不一样的是循环读取出excel文件。
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 43 44 45 46 47 48 49 | # -*- 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在图片加上数字水印的方法