hadoop项目实战--ETL--(二)实现自动向mysql中添加数据
四 项目开发
1 创建数据库db_etl,新建两张表user 和oder。表结构如第一部分图所示。
2 编写python脚本,实现自动向mysql中插入数据。
新建python 项目,目录结构如下图

编写代码如下:
# _*_ coding:UTF- _*_
'''
Created on 2016年12月1日 @author: duking
'''
import MySQLdb
import random,string
import time
import threading
'''
数据库连接
'''
def ConnMysql():
#连接数据库
conn = MySQLdb.connect(host = "192.168.0.154", user = 'root', passwd = '', db = 'db_etl', charset = 'utf8')
cursor = conn.cursor()
return conn,cursor '''
插入user数据
'''
def AddUserInfo(username,passwd): conn,cursor = ConnMysql() sql = "insert into userinfo(username,passwd) values(%s,%s)" param = (username,passwd) cursor.execute(sql,param) conn.commit()
cursor.close()
conn.close() '''
插入order数据
'''
def AddOderInfo(warename,price): conn,cursor = ConnMysql() sql = "insert into oderinfo(warename,price) values(%s,%s)" param = (warename,price) cursor.execute(sql,param) conn.commit()
cursor.close()
conn.close() '''
随机产生字符串
'''
def Random_Str(randomlength):
a = list(string.ascii_letters)
random.shuffle(a)
return ''.join(a[:randomlength]) #随机生成订单信息
def MakeOderInfo(threadname):
while(True):
#随机10~100秒生成一条Oder信息
time.sleep(random.randint(,))
AddOderInfo(Random_Str(random.randint(,)),float(round(random.uniform(,),)))
print threadname + ':a new OderInfo is Maked ' + time.ctime(time.time()) #随机生成用户信息
def MakeUserInfo(threadname):
while(True):
time.sleep(random.randint(,))
AddUserInfo(Random_Str(random.randint(,)),Random_Str(random.randint(,)))
print threadname + ':a new UserInfo is Maked ' +time.ctime(time.time()) #python 模块的入口:main函数
if __name__ == '__main__': #多线程
thread_1 = threading.Thread(target=MakeOderInfo,args=('thread_1', ))
thread_2 = threading.Thread(target=MakeUserInfo,args=('thread_2', )) #启动线程
thread_1.start()
thread_2.start()
注意:python调用mysql需要引入MySQLdb模块,改模块的安装请看另外的教程
最后,将写好的python在linux中运行。
运行后查看数据库就可以看见数据在不断的增长了。
hadoop项目实战--ETL--(二)实现自动向mysql中添加数据的更多相关文章
- Hadoop项目实战-用户行为分析之应用概述(二)
1.概述 本课程的视频教程地址:<项目整体概述> 本节给大家分享的主题如下图所示: 下面我开始为大家分享第二节的内容——<项目整体概述>,下面开始今天的分享内容. 2.内容 从 ...
- 【慕课网实战】Spark Streaming实时流处理项目实战笔记二十一之铭文升级版
铭文一级: DataV功能说明1)点击量分省排名/运营商访问占比 Spark SQL项目实战课程: 通过IP就能解析到省份.城市.运营商 2)浏览器访问占比/操作系统占比 Hadoop项目:userA ...
- Hadoop项目实战-用户行为分析之应用概述(三)
1.概述 本课程的视频教程地址:<项目工程准备> 本节给大家分享的主题如下图所示: 下面我开始为大家分享今天的第三节的内容——<项目工程准备>,接下来开始分享今天的内容. 2. ...
- Hadoop项目实战-用户行为分析之应用概述(一)
1.概述 本课程的视频教程地址:<Hadoop 回顾> 好的,下面就开始本篇教程的内容分享,本篇教程我为大家介绍我们要做一个什么样的Hadoop项目,并且对Hadoop项目的基本特点和其中 ...
- Selenium Web 自动化 - 项目实战(二)
Selenium Web 自动化 - 项目实战(二) 2016-08-08 什么是数据驱动?简答的理解就是测试数据决定了测试结果,这就是所谓数据驱动.数据驱动包含了数据,他就是测试数据,在自动化领域里 ...
- (转载)Android项目实战(二十七):数据交互(信息编辑)填写总结
Android项目实战(二十七):数据交互(信息编辑)填写总结 前言: 项目中必定用到的数据填写需求.比如修改用户名的文字编辑对话框,修改生日的日期选择对话框等等.现总结一下,方便以后使用. 注: ...
- (转载)Android项目实战(二十八):Zxing二维码实现及优化
Android项目实战(二十八):Zxing二维码实现及优化 前言: 多年之前接触过zxing实现二维码,没想到今日项目中再此使用竟然使用的还是zxing,百度之,竟是如此牛的玩意. 当然,项目中 ...
- (转载)Android项目实战(二十八):使用Zxing实现二维码及优化实例
Android项目实战(二十八):使用Zxing实现二维码及优化实例 作者:听着music睡 字体:[增加 减小] 类型:转载 时间:2016-11-21我要评论 这篇文章主要介绍了Android项目 ...
- ligerui_实际项目_003:form中添加数据,表格(grid)里面显示,最后将表格(grid)里的数据提交到servlet
实现效果: "Form"中填写数据,向本页"Grid"中添加数据,转换成Json数据提交,计算总和,Grid文本框可编辑,排序 图片效果: 总结: //disp ...
随机推荐
- Nagle's Algorithm and TCP_NODELAY
w非全尺寸分组的发送条件 HTTP The Definitive Guide TCP has a data stream interface that permits applications to ...
- Nginx 之 内存池
1.基本结构 先来学习一下nginx内存池的几个主要数据结构:[见:./src/core/ngx_palloc.h/.c] ngx_pool_data_t(内存池数据块结构) 1: typed ...
- Newman语法参数
npm install -g newman npm install -g newman-reporter-html newman run XXX.json -k -r html --reporter- ...
- SpringBoot安装和创建简单的Web应用
SpringBoot安装 方式一: Eclipese->Help->Eclipse Marketplace ->Finde STS -> Install 注意:安装过程中挺慢, ...
- flatpickr功能强大的日期时间选择器插件
flatpickr日期时间选择器支持移动手机,提供多种内置的主题效果,并且提供对中文的支持.它的特点还有: 使用SVG作为界面的图标. 兼容jQuery. 支持对各种日期格式的解析. 轻量级,高性能, ...
- 安卓android的联系人的contacts, raw contacts, and data的区别
https://stackoverflow.com/questions/5151885/android-new-data-record-is-added-to-the-wrong-contact/51 ...
- 《闪存问题之PROGRAM DISTURB》总结
来自 http://www.ssdfans.com/?p=1814 SSD之所以需要BCH或LDPC等ECC纠错算法,是因为闪存中的数据会在神不知鬼不觉的情况下发生比特翻转. 导致比特翻转的原因很多, ...
- knockout 学习使用笔记----绑定map--双向绑定
简单的方式,使用 knockout.mapping.js. 1.引入knockout.mapping.js. 2.声明模型 var model = { task:null, feedbacks:[], ...
- 如何注册iClap账号?
iClap是一个以产品为基础,集成员工日常所需工具,打通项目工作流程,实现员工自我工作管理.项目管理和企业管理三个体系协同的管理规范系统. 工具/原料 iPhone/Android/浏览器 Teamb ...
- ACM-ICPC 2018 沈阳赛区网络预赛 J. Ka Chang (树分块)
题意:一个树,支持两种操作:1.将深度为L的节点权置加上X;2.求以x为根节点的子树上节点权置之和.根节点深度为0. 分析:考虑用树状数组维护节点权置,按dfs序下标查询.记录每个深度节点的个数.如果 ...