python写的,有点冗余,先码出来~~~~

这是data_stored.py的代码

 # -*- coding:utf-8 -*-
# 存数据到mysql (只存了时间数字)
import pymysql
import csv
import datetime
import settings
from mysql import db
import os,time
import pandas as pd
import numpy as np
import threading
from apscheduler.schedulers.blocking import BlockingScheduler
from datetime import date
import csv
import utils
# filename = 'may_origin.csv'
# tablename = 'origin_data'
class data_stored(object):
def __init__(self):
pass def data_stored(self,filename,tablename): csvfile = open(filename,'r')
dict_reader = csv.DictReader(csvfile)
db.connect()
datas = []
freq = 0 for row in dict_reader:
row = dict(row)
if row['']:
del(row[''])
#创建表
columns =[]
for i in row.keys():
columns.append(i)
if (db.is_table_exist(tablename=tablename,dbname=settings.database) ==None and freq ==0 ):
db.create_table(tablename=tablename,columns=columns)
freq += 1
print("create is ok")
else:
pass
#插入数据
row['time'] = int(time.mktime(time.strptime(row['time'], '%Y-%m-%d %H:%M:%S')))
datas.append(row)
db.insert_mysql_with_json(tablename, datas)
print("insert is ok")
db.disconnect() def data_to_csv(self,filename,tablename,starttime,endtime,readfile=None,sep=None): db.connect()
fieldNames, results = db.find(tablename, starttime, endtime) data = [] for fn in fieldNames:
data.append(fn)
#文件不存在
if readfile == None:
csvfile = open(filename, 'w')
writer = csv.writer(csvfile, dialect=("excel"))
# 插入列名
data_1 = []
data_1 = sorted(set(data), key=data.index)
writer.writerow(data_1)
#文件存在
else:
csvfile = open(filename, 'a')
writer = csv.writer(csvfile, dialect=("excel")) # 插入data
for info in results:
data_2 = []
# for m_2 in info:
# data_2.append(m_2)
writer.writerow(info)
csvfile.close()
db.disconnect()
# #
# if __name__ == "__main__":
# filename='may_origin.csv'
# filename2='csvtest_05.csv'
# tablename = 'originData'
# st = 1462032004
# et = 1462032007
#
# t = data_stored()
# starttime = datetime.datetime.now()
#
# # t.data_stored(filename,tablename)
# t.data_to_csv(filename2,tablename, st,et)
# endtime =datetime.datetime.now()
#
# print(endtime-starttime)
ds = data_stored()

其中调用了mysql.py的代码就不码了,就是一些连接、断开数据库connect()、disconnect(),创建数据库create_table(),判断tablename是否存在is_table_exist,以及查列名find_columns(),查找数据find(),还有插入数据库数据insert_into_mysql()。

 import settings
from mysql import db
import os
import csv
import utils def time_main(start_time, end_time, tablename, columns=None):
timespan = settings.timespan
output_filename = 'sfhd_' + '_origin_' + utils.getDigitDay(start_time) + '.csv'
db.connect()
# 判断输出文件是否存在 :False为不存在
if os.path.isfile(output_filename) == False:
pass
else:
end_time = start_time
start_time = start_time -86400
output_filename = 'sfhd_' + '_origin_' + utils.getDigitDay(start_time) + '.csv' # 隔一个时间段timespan存一次
with open(output_filename, 'w') as csvfile: if columns == None:
columns = db.find_columns(tablename)
data = list(columns) writer = csv.writer(csvfile, dialect=("excel"))
data_1 = sorted(set(data), key=data.index)
writer.writerow(data_1) temp_time = start_time + timespan
current_time = start_time while temp_time <= end_time+3:
utils.log_easy('time_main', utils.getTimeDes(temp_time))
fieldNames, results = db.find(tablename, current_time, temp_time-1, columns)
# 插入data
for info in results:
writer.writerow(info)
current_time = temp_time
temp_time = current_time + timespan
db.disconnect()

这是简化过后的mysql数据存到CSV文件中。

常见的mode取值组合

r或rt  默认模式,文本模式读
rb 二进制文件 w或wt 文本模式写,打开前文件存储被清空
wb 二进制写,文件存储同样被清空 a 追加模式,只能写在文件末尾
a+ 可读写模式,写只能写在文件末尾 w+ 可读写,与a+的区别是要清空文件内容
r+ 可读写,与a+的区别是可以写到文件任何位置

在选择读文件的方式时,我发现 with open 打开文件并存数据,要比直接open打开存数据要快。因为前者可以在存好数据后就自动关闭文件,并且可以很好处理上下文的异常,还有清理工作。

csv格式的数据存储到mysql的更多相关文章

  1. MYSQL导入CSV格式文件数据执行提示错误(ERROR 1290): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement.

    MYSQL导入CSV格式文件数据执行提示错误(ERROR 1290): The MySQL server is running with the --secure-file-priv option s ...

  2. 导入CSV格式的数据

    导入CSV格式的数据 (参见http://dev.mysql.com/doc/refman/5.6/en/load-data.html) 1.数据库表(st_pptn_r) CREATE TABLE ...

  3. 猫眼电影爬取(一):requests+正则,并将数据存储到mysql数据库

    前面讲了如何通过pymysql操作数据库,这次写一个爬虫来提取信息,并将数据存储到mysql数据库 1.爬取目标 爬取猫眼电影TOP100榜单 要提取的信息包括:电影排名.电影名称.上映时间.分数 2 ...

  4. python3下scrapy爬虫(第十卷:scrapy数据存储进mysql)

    上一卷中我将爬取的数据文件直接写入文本文件中,现在我将数据存储到mysql中,我依然用的是pymysql,这个很麻烦建表需要在外面建 这次代码只需要改变pipyline就行 来 现在看下结果: 对比发 ...

  5. 使用MapReduce读取HBase数据存储到MySQL

    Mapper读取HBase数据 package MapReduce; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hba ...

  6. Spring Boot 揭秘与实战(二) 数据存储篇 - MySQL

    文章目录 1. 环境依赖 2. 数据源3. 脚本初始化 2.1. 方案一 使用 Spring Boot 默认配置 2.2. 方案二 手动创建 4. 使用JdbcTemplate操作5. 总结 4.1. ...

  7. 第四天,同步和异常数据存储到mysql,item loader方法

    github对应代码:伯乐在线文章爬取     一. 普通插入方法 1. 连接到我的阿里云,用户名是test1,然后在navicat中新建数据库

  8. 将白码平台数据存储到MySQL数据库

    概述: 此前在白码平台上搭建并使用系统,若想要将白码平台上搭建的系统的数据存储到自己本地的MySQL数据库中的话,需要将数据导出后再对数据进行处理.如今想要实现这一需求,直接通过使用白码的数据库对接功 ...

  9. Python 抓取数据存储到Mysql中

    # -*- coding: utf-8 -*- import os,sys import requests import bs4 import pymysql#import MySQLdb #连接MY ...

随机推荐

  1. C#综合揭秘——细说多线程(二)

    /* 异步写入 FileStream中包含BeginWrite.EndWrite 方法可以启动I/O线程进行异步写入. public override IAsyncResult BeginWrite ...

  2. linux上redis安装配置及其防漏洞配置及其攻击方法

    Linux上redis安装: 需先在服务器上安装yum(虚拟机可使用挂载的方式安装) 安装配置所需要的环境运行指令:  yum -y install gcc 进入解压文件执行make 指令进行编译 执 ...

  3. Go语言备忘录:net/http包的使用模式和源码解析

    本文是晚辈对net/http包的一点浅显的理解,文中如有错误的地方请前辈们指出,以免误导! 转摘本文也请注明出处:Go语言备忘录:net/http包的使用模式和源码解析,多谢!  目录: 一.http ...

  4. JS中apply和call的区别和用法

    Javascript中有一个call和apply方法,其作用基本相同,但是它们也有略微不同的地方. JS手册中对call方法的解释是: call方法:调用一个对象的一个方法,以另一个对象替换当前对象. ...

  5. 多平台Native库打入JAR包发布实战

    1.前言 在开发Java应用的过程中,经常会遇到需要使用C/C++等Native语言编译的动态库或静态库,在这些情况下往往需要将预先编译好的各平台库文件与JAR包一同发布,鉴于简洁的原则,我们可能会希 ...

  6. 企业微信开发之向员工付款(C#)

    一.企业微信API 地址:http://work.weixin.qq.com/api/doc#11545 二.参数说明 1.向员工付款 请求方式:POST(HTTPS)请求地址:https://api ...

  7. 【转】C语言产生随机数

    原文地址:http://www.cnblogs.com/xianghang123/archive/2011/08/24/2152404.html 在C语言中,rand()函数可以用来产生随机数,但是这 ...

  8. Java的绝对路径和相对路径

    Java的绝对路径和相对路径 参考:http://blog.csdn.net/u011225629/article/details/46872775 1. 绝对路径 以根部件开始的路径是绝对路径,比如 ...

  9. MySQL分区表与合并表

    一.分区表 1. 什么是分区表? 对用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成(所以索引也是按照分区的子表定义的, 而没有全局索引).实现分区的代码实际上是对一组底层表的句柄对象的 ...

  10. Python多进程应用

    在我之前的一篇博文中详细介绍了Python多线程的应用:  进程,线程,GIL,Python多线程,生产者消费者模型都是什么鬼 但是由于GIL的存在,使得python多线程没有充分利用CPU的多核,为 ...