- 記錄運行數(shù)據(jù)需要搭建數(shù)據(jù)記錄服務器
-
規(guī)劃
image.png
原型
- web-server: apache
- db: mysql
創(chuàng)建表格
- 數(shù)據(jù)表格
-
設置表格
數(shù)據(jù)表格中通過設置ID索引設置表格
image.png
表
數(shù)據(jù)表
設置表
數(shù)據(jù)上傳(寫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()
數(shù)據(jù)下載
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 已經(jīng)替換成 pymysql(不再是py2中的 pymysqldb)
-
mysql中的數(shù)據(jù)長度和類型有關
image.png - 數(shù)據(jù)有效記錄使用的是二進制(blob),所以上傳時需要進行binary
rowData = ( sn, jid, dir, setupid, dt.strftime("%Y-%m-%d %H:%M:%S"), sql.Binary(content) )
- 上傳使用的下面的格式,可以省去組織字符的引號過程
cursor.execute( sqlReq, args = rowData )
- 由于上傳的數(shù)據(jù)時原始格式(未經(jīng)格式化,數(shù)據(jù)是多變的也沒有辦法格式化)憔购,所以在進行數(shù)據(jù)處理時需要根據(jù)格式進行解析