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. 在sqlserver2005/2008中备份数据库,收缩日志文件

    ---1.先备份数据库(含日志文件) use myhis go backup database myhis to disk='d:\myhis_rzbak' go ---2.设为简单恢复模式 use ...

  2. Echarts数据可视化visualMap,开发全解+完美注释

    全栈工程师开发手册 (作者:栾鹏) Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解 6大公共组件详解(点击进入): title详解. tooltip详解.toolb ...

  3. db2备份还原

    还原步骤:创建好数据库后进入该数据库 .restore db TSMESDB from D:\ICSS\dbData on D:\ICSS\dbData  into TSMESDB redirect. ...

  4. 我的three.js学习记录(三)

    此次的亮点不是three.js的3d部分,而是通过调用摄像头然后通过摄像头的图像变化进行简单的判断后进行一些操作.上篇中我通过简单的示例分析来学习three.js,这次是通过上一篇的一些代码来与摄像头 ...

  5. JavaScript命令模式

    第一,命令模式: (1)用于消除调用者和接收者之间直接的耦合的模式,并且可以对(调用这个过程进行留痕操作) (2)真的不要乱用这个模式,以为他使你简单调用写法变得非常的复杂和有些难以理解. (3)你的 ...

  6. javascript面向对象的写法及jQuery面向对象的写法

    文章由来:jQuery源码学习时的总结 在JS中,一般的面向对象的写法如下: function Cao(){}//定义一个构造函数 Cao.prototype.init = function(){}/ ...

  7. [ACdream]瑶瑶带你玩激光坦克

    题目链接:http://acdream.info/contest?cid=1269#problem-B Problem Description 有一款名为激光坦克的游戏,游戏规则是用一个坦克发出激光来 ...

  8. [Hdu1342] Lotto

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1342 题目大意:输出6--13从小到大个数,然后按顺序输出6个数,输出所有种可能. 解题思路:这题难度 ...

  9. iOS 通讯录空格

    iOS 通讯录联系人出现 ASCII 码值为 160 的空格  NOTE:       这里的"空格"是指 在通讯录中取出的联系人中带有特殊空格 带有特殊空格的字符串 " ...

  10. 自学Java HashMap源码

    自学Java HashMap源码 参考:http://zhangshixi.iteye.com/blog/672697 HashMap概述 HashMap是基于哈希表的Map接口的非同步实现.此实现提 ...