智能眼镜的网页端需要生成测试数据,先尝试一下生成随机数据,再试着尽量把数据做得合理一些。
phpMyAdmin 是一种 MySQL数据库前台的基于PHP的工具。
pymysql是用来连接python和mysql之间的通道,在使用python编程时,通过它来和mysql数据库进行交互。
安装pymysql模块:在终端输入pip install pymysql
此次只向data_series表中生成数据。data_series中的字段有user_id,date,distance,lux和angle。use_login表中,目前只有id为3,6,25三位用户,user_id要满足这一限制。
np.random.randn(n)该函数返回一个样本,有n个数,具有标准正态分布。
打算先以15min为间隔,生成一整天的数据,因此每次随机产生的应该有96个数据。从distance入手,想要的是在[5,200]之间正态分布的96个整数。
为了生成正态分布,需要载入包为scipy统计包中的norm
1 from scipy.stats import norm
没有的话还是要先安装:pip install scipy
调出来生成的数据还算正常的distance:
1 2 3 distance = r.uniform((5 -40 )/10 , (200 -40 )/10 ) distance = norm.rvs(distance, size=120 ) distance = distance*10 +40
利用pandas生成等间隔时间:96个时间,间隔为900s
1 dateTime = pd.date_range('2019-9-10 00:00:00' , periods=96 , freq='900s' )
连接数据库时,pycharm报错:”Lost connection to MySQL server during query“,是因为我把端口号写错了,MySQL使用的端口号为3306
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 import random as rfrom scipy.stats import normimport pandas as pdimport pymysqluserId = (3 , 6 , 25 ) dateTime = pd.date_range('2019-9-10 00:00:00' , periods=96 , freq='900s' ) distance = r.uniform((5 - 40 ) / 10 , (200 - 40 ) / 10 ) distance = norm.rvs(distance, size=120 ) distance = distance * 10 + 40 lux = r.uniform((30 - 720 ) / 770 , (25000 - 720 ) / 770 ) lux = norm.rvs(lux, size=120 ) lux = lux * 770 + 700 angle = r.uniform(-45 / 10 , 45 / 10 ) angle = norm.rvs(angle, size=120 ) angle = angle * 10 conn = pymysql.connect(host='127.0.0.1' , port=3306 , db='ahri' , user='root' , password='' , charset='utf8' ) cur = conn.cursor() for i in range(96 ): tmpId = r.choice(userId) print(tmpId, str(dateTime[i]), distance[i], lux[i], angle[i]) cur.execute("insert into data_series(user_id,date,distance,lux,angle) values(%s,%s,%s,%s,%s)" , (tmpId, str(dateTime[i]), int(distance[i]), int(lux[i]), int(angle[i]))) cur.execute('select * from data_series' ) for s in cur.fetchall(): print(s) conn.commit() cur.close() conn.close()