csv格式的数据存储到mysql
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的更多相关文章
- 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 ...
- 导入CSV格式的数据
导入CSV格式的数据 (参见http://dev.mysql.com/doc/refman/5.6/en/load-data.html) 1.数据库表(st_pptn_r) CREATE TABLE ...
- 猫眼电影爬取(一):requests+正则,并将数据存储到mysql数据库
前面讲了如何通过pymysql操作数据库,这次写一个爬虫来提取信息,并将数据存储到mysql数据库 1.爬取目标 爬取猫眼电影TOP100榜单 要提取的信息包括:电影排名.电影名称.上映时间.分数 2 ...
- python3下scrapy爬虫(第十卷:scrapy数据存储进mysql)
上一卷中我将爬取的数据文件直接写入文本文件中,现在我将数据存储到mysql中,我依然用的是pymysql,这个很麻烦建表需要在外面建 这次代码只需要改变pipyline就行 来 现在看下结果: 对比发 ...
- 使用MapReduce读取HBase数据存储到MySQL
Mapper读取HBase数据 package MapReduce; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hba ...
- Spring Boot 揭秘与实战(二) 数据存储篇 - MySQL
文章目录 1. 环境依赖 2. 数据源3. 脚本初始化 2.1. 方案一 使用 Spring Boot 默认配置 2.2. 方案二 手动创建 4. 使用JdbcTemplate操作5. 总结 4.1. ...
- 第四天,同步和异常数据存储到mysql,item loader方法
github对应代码:伯乐在线文章爬取 一. 普通插入方法 1. 连接到我的阿里云,用户名是test1,然后在navicat中新建数据库
- 将白码平台数据存储到MySQL数据库
概述: 此前在白码平台上搭建并使用系统,若想要将白码平台上搭建的系统的数据存储到自己本地的MySQL数据库中的话,需要将数据导出后再对数据进行处理.如今想要实现这一需求,直接通过使用白码的数据库对接功 ...
- Python 抓取数据存储到Mysql中
# -*- coding: utf-8 -*- import os,sys import requests import bs4 import pymysql#import MySQLdb #连接MY ...
随机推荐
- 用C#实现字符串相似度算法(编辑距离算法 Levenshtein Distance)
在搞验证码识别的时候需要比较字符代码的相似度用到"编辑距离算法",关于原理和C#实现做个记录. 据百度百科介绍: 编辑距离,又称Levenshtein距离(也叫做Edit Dist ...
- winwebmail设置能用foxmail收发邮件
域名解析注意 1.首先做A记录解析: 主机名处:输入 mail IP地址处:输入IP地址 2.做MX记录: 主机名处: 大都保持空输入,什么也不用输入 TTL:默认就可以了,不需要改动 优先级:一 ...
- netfilter/iptables和firewalld的关系
1.netfilter 是linux 内核模块,其中包含了大量的内核规则,而要想对这些内核规则进行操作,就需要用户态的工具. iptables和firewalld就是一个用户态的工具. 2.iptab ...
- 使用keepalived使用主备热备份功能
图: 配置文件: 主服务器的配置如下: global_defs { router_id NodeA}vrrp_instance VI_1 { state MASTER #设置为主服务器 interfa ...
- Java 线程并发
http://www.yesky.com/9/1899009.shtml http://zhidao.baidu.com/link?url=-xZ9JLo5x4bvCSVyXb2XhO6TODnBcU ...
- d3力导向图聚焦
效果描述 双击节点,节点以及节点一度关联的节点保持高亮状态,其余节点变灰,半径变小,文字消失,并且向内收缩. 效果展示 正常状态 聚焦效果 关键代码 节点变化 激活节点保持高亮的样式,其余节点应用no ...
- redis3.2新功能--GEO地理位置命令介绍
概述 redis3.2发布rc版本已经有一段时间了,估计RedisConf 2016左右,3.2版本就能release了.3.2版本中增加的最大功能就是对GEO(地理位置)的支持.说起redis的GE ...
- 神经网络JOONE的实践
什么是joone Joone是一个免费的神经网络框架来创建,训练和测试人造神经网络.目标是为最热门的Java技术创造一个强大的环境,为热情和专业的用户. Joone由一个中央引擎组成,这是Joone开 ...
- eclispe中安装hibernate插件
用eclispe玩ee的朋友,写配置文件的时候没有提示非常苦恼,而配置dtd文件还是没有得到解决,最后试了试安装插件解决了问题 地址:http://download.jboss.org/jbossto ...
- 快速排序算法分析--C++版
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试喜欢考这个. 快速排序是C.R.A.Hoar ...