- 记录运行数据需要搭建数据记录服务器
-
规划
image.png
原型
- web-server: apache
- db: mysql
创建表格
- 数据表格
-
设置表格
数据表格中通过设置ID索引设置表格
image.png
表


数据上传(写db)
def upload( content, sn="", jid = 0, dir = 0, setupid = 0, dt=None ):
db = sql.connect( inverse_gap_db.inverse_gap_db_host,
inverse_gap_db.inverse_gap_db_user,
inverse_gap_db.inverse_gap_db_pw,
inverse_gap_db.inverse_gap_db_name,
charset='utf8')
cursor = db.cursor()
sqlReq = "INSERT INTO %s ( sn, jid, dir, setup_id, ts, data ) " % inverse_gap_db.inverse_gap_tablename
sqlReq = sqlReq + "VALUES ( %s, %s, %s, %s, %s, %s )"
# by current time
if ( dt == None):
dt = datetime.datetime.now()
rowData = ( sn, jid, dir, setupid, dt.strftime("%Y-%m-%d %H:%M:%S"), sql.Binary(content) )
try:
cursor.execute( sqlReq, args = rowData )
db.commit()
except Exception as e:
print("fail to db op", e )
db.rollback()
db.close()
数据下载
def download( sn, dir= 0 ):
db = sql.connect( inverse_gap_db.inverse_gap_db_host,
inverse_gap_db.inverse_gap_db_user,
inverse_gap_db.inverse_gap_db_pw,
inverse_gap_db.inverse_gap_db_name,
charset='utf8')
cursor = db.cursor()
sqlReq = "SELECT * FROM %s WHERE sn=\'%s\' and dir=%d ORDER BY ts DESC" % ( inverse_gap_db.inverse_gap_tablename, sn, dir )
fullCmd = sqlReq
payload = None
try:
cursor.execute( fullCmd )
row = cursor.fetchone()
payload = row[ 5 ]
except Exception as e:
print("fail to db op", e )
db.close()
return payload
下载后的绘制
def plotCsv( content ):
stream = encodings.utf_8.decode( content )
temp = numpy.fromstring( content, sep=',')
fig = plt.figure(1)
plt.plot( temp,'-*' )
plt.show()

记录
- py3中的mysql module 已经替换成 pymysql(不再是py2中的 pymysqldb)
-
mysql中的数据长度和类型有关
image.png
- 数据有效记录使用的是二进制(blob),所以上传时需要进行binary
rowData = ( sn, jid, dir, setupid, dt.strftime("%Y-%m-%d %H:%M:%S"), sql.Binary(content) )
- 上传使用的下面的格式,可以省去组织字符的引号过程
cursor.execute( sqlReq, args = rowData )
- 由于上传的数据时原始格式(未经格式化,数据是多变的也没有办法格式化),所以在进行数据处理时需要根据格式进行解析
网友评论