利用了创建列表和查询两种方式,
1:创建列表的时候 用了一个异常的判断:
2:通过python插入数据到json :
方法1:
temp=[time , agv_id , obstacle,obstacle_name]
cursor.execute("insert into exception (time,AGV_ID,Error_ID,infomation) values (?,?,?,?)", temp)
方法2:
cursor.execute("insert into exception values('%s', '%s','%s' ) " %(start_time ,ID ,infomation))
个人感受,方法1 比方法2 要好
#!/usr/bin/python
# coding: utf-8
import json
import sqlite3
import re
import argparse
def create_db( ):
conn = sqlite3.connect('agv_info.db')
cursor.execute(''' create table name(
time text,
AGV_ID int,
infomation text);''')
def insert_data_to_sql(info):
flag=[]
agv_id=[]
start_time=''
this = ']'
nu='-'
connected=r'connected'
flag.append(line.index(this))
flag.append(line.index(nu))
for i in range(0,len(info)):
start_time=''
for j in range(1,flag[0]):
start_time=start_time+info[i][j]
# print("start_time:",start_time)
ID=''
for j in range(flag[1]+1,flag[1]+4):
if info[i][j]==']':
order =j
break
ID=ID+info[i][j]
if ID=='cte':
# print("information:",connected)
continue
#print('ID:',ID)
if ID not in agv_id:
agv_id.append(ID)
infomation=''
for j in range(flag[1]+4,len(info[i])):
infomation=infomation+info[i][j]
# print(infomation)
cursor.execute("insert into exception values('%s', '%s','%s' ) " %(start_time ,ID ,infomation))
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='monitor exceptions from server')
#parser.add_argument('-h', '--help', help='Statistics for abnormal information')
parser.add_argument('-i', '--file', help='contain information of file')
args = vars(parser.parse_args())
file_name = args['file']
info =[]
for line in open(file_name,'r'):
info.append(line)
print(" 56666 ")
conn = sqlite3.connect('fitkits.db')
cursor = conn.cursor()
try:
cursor.execute(''' create table exception(
time text,
AGV_ID int,
infomation text);''')
except sqlite3.Error as e:
print(e)
insert_data_to_sql(info)
conn.commit()
conn.close()
print('DONE!')