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. android中跨线程向控件传值的问题

    activity.oncreate(bundle savedinstancestate)中创建一个handler类的实例, 在这个handler实例的handlemessage回调函数中调用更新界面显 ...

  2. winPcap编程之获取适配器信息(二)

    首先要读一下这一页的东西:http://www.winpcap.org/docs/docs_412/html/group__wpcapsamps.html 可以结合中文版本看http://www.fe ...

  3. C#高级编程第9版 阅读笔记(一)

    一.前言 C# 简洁.类型安全的面向对象的语言. .NET是一种在windows平台上编程的架构——一种API. C#是一种从头开始设计的用于.NET的语言,他可以利用.NET Framework及其 ...

  4. 根据Dockerfile创建docker dotnet coer 镜像

    那我们先来看看Dockerfile文件内容,注意这个文件是没后缀名的. #依赖原始的镜像,因为我们是要创建dotnet coer镜像,所以我就用了官方给的镜像[microsoft/dotnet:lat ...

  5. 【转载】使用CSS将图片转换成黑白(灰色、置灰)

    文章转载自 张鑫旭-鑫空间-鑫生活 http://www.zhangxinxu.com/ 原文链接:http://www.zhangxinxu.com/wordpress/?p=2547原文摘要: . ...

  6. 【学习】js学习笔记:数组(二)

    二维数组 例子:矩形反转: <script> var arr=[[1,1,1,1,1],[2,2,2,2,2],[3,3,3,3,3],[4,4,4,4,4],[5,5,5,5,5]]; ...

  7. (@WhiteTaken)设计模式学习——享元模式

    继续学习享元模式... 乍一看到享元的名字,一头雾水,学习了以后才觉得,这个名字确实比较适合这个模式. 享元,即共享对象的意思. 举个例子,如果制作一个五子棋的游戏,如果每次落子都实例化一个对象的话, ...

  8. 各大公司Java后端开发面试题总结

    ThreadLocal(线程变量副本)Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量.采用空间换时间,它用于线程间的数据隔离,为每一个使用该变量的线程提供一个副 ...

  9. yum fastermirror插件屏蔽一些国内源

    最近被yum上hust源的问题恶心的受不了了,真不明白这种源还活着有什么意义,干脆关了得了,省得恶心人,经常Errno 14,404not found,去网页一看,好家伙,提示404的xml.gz路径 ...

  10. oracle建表权限问题和JSP连接oracle数据库基本操作

    JSP连接oracle数据库相关操作 1.创建表 打开Enterprise Manager Console,为用户添加权限CREATE ANY TABLE和分配一定的表空间USERS限额1024k. ...