您的位置:首页 > 数据库 > SQL

hadoop项目实战--ETL--(二)实现自动向mysql中添加数据

2016-12-01 15:00 726 查看

四 项目开发

1 创建数据库db_etl,新建两张表user 和oder。表结构如第一部分图所示。

2 编写python脚本,实现自动向mysql中插入数据。

新建python 项目,目录结构如下图



编写代码如下:

# _*_ coding:UTF-8 _*_
'''
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 = '123456', 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(10,100))
AddOderInfo(Random_Str(random.randint(6,10)),float(round(random.uniform(10,100),2)))
print threadname + ':a new OderInfo is Maked    ' + time.ctime(time.time())

#随机生成用户信息
def MakeUserInfo(threadname):
while(True):
time.sleep(random.randint(20,100))
AddUserInfo(Random_Str(random.randint(6,10)),Random_Str(random.randint(6,10)))
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中运行。

运行后查看数据库就可以看见数据在不断的增长了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: