@@ -20,116 +20,116 @@ def __init__(self,root_path,db_name,talbe_name, JadeLog=None):
2020 # 使用cursor()方法获取操作游标,连接数据库
2121 self .db = sqlite3 .connect (self ._db_name , check_same_thread = False )
2222 self .cursor = self .db .cursor ()
23- if self .JadeLog :
24- self .JadeLog .DEBUG (
25- "#" * 30 + "{}数据库连接成功" .format (talbe_name ) + "#" * 30
26- )
27-
23+ self .log ("#" * 30 + "{}数据库连接成功" .format (talbe_name ) + "#" * 30 ,LEVEL = "DEBUG" )
2824 super (JadeSqliteDataBase , self ).__init__ ()
2925
30- # 重新连接
31-
26+ def create_table (self , sql_str ):
27+ try :
28+ if type (sql_str ) == str :
29+ self .cursor .execute (sql_str )
30+ elif type (sql_str ) == dict :
31+ self .create_table_by_dic (sql_str )
32+ except :
33+ pass
3234
33- def create_table (self , table_config ):
35+ def create_table_by_dic (self , table_config ):
3436 """:parameter
3537 table_name:表名
3638 table_config:dict
3739 """
38- sql_str = (
39- "CREATE TABLE {} (id INTEGER PRIMARY KEY AUTOINCREMENT ," .format (
40- self .table_name
41- )
42- )
4340 try :
44-
41+ key_str_list = []
4542 for key in table_config :
46- if key == "rec_date" :
47- continue
48- if "path" in key :
49- size_str = " varchar(255),"
50- elif key == "detect_type" :
51- size_str = " varchar(255),"
52- else :
53- size_str = " varchar(20),"
54- sql_str = sql_str + key + size_str
43+ key_str_list .append (key + " " + table_config [key ])
5544 sql_str = (
56- sql_str
57- + "rec_date TIMESTAMP default (datetime('now', 'localtime')))"
45+ "CREATE TABLE {} ({})" .format (
46+ self .table_name ,"," .join (key_str_list )
47+ )
5848 )
5949 self .cursor .execute (sql_str )
6050 except Exception as e :
6151 if "exists" in str (e ):
6252 pass
6353 else :
64- if self .JadeLog :
65- self .JadeLog .ERROR ("创建表失败,失败原因为{}" .format (e ))
54+ self .log ("创建表失败,失败原因为{}" .format (e ))
55+
56+ def log (self ,str ,LEVEL = "ERROR" ):
57+ if self .JadeLog :
58+ if LEVEL == "DEBUG" :
59+ self .JadeLog .DEBUG (str )
60+ elif LEVEL == "INFO" :
61+ self .JadeLog .INFO (str )
62+ elif LEVEL == "WARNING" :
63+ self .JadeLog .WARNING (str )
64+ elif LEVEL == "ERROR" :
65+ self .JadeLog .ERROR (str )
66+ else :
67+ print (str )
68+
69+ def base_query (self ,sql ):
70+ try :
71+ try :
72+ self .lock .acquire (True )
73+ self .cursor .execute (sql )
74+ return self .cursor .fetchall ()
75+ finally :
76+ self .lock .release ()
77+ except Exception as e :
78+ self .log ("查询数据库失败,失败原因为:{},sql语句为:{}" .format (e ,sql ),LEVEL = "ERROR" )
79+
80+ def base_update (self ,sql ):
81+ try :
82+ try :
83+ self .lock .acquire (True )
84+ self .cursor .execute (sql )
85+ self .db .commit ()
86+ finally :
87+ self .lock .release ()
88+ except Exception as e :
89+ self .log ("更新数据库失败,失败原因为:{},sql语句为:{}" .format (e ,sql ),LEVEL = "ERROR" )
90+
91+ def base_delete (self ,sql ):
92+ try :
93+ try :
94+ self .lock .acquire (True )
95+ self .cursor .execute (sql )
96+ self .db .commit ()
97+ self .cursor .execute ("VACUUM" )
98+ self .db .commit ()
99+ finally :
100+ self .lock .release ()
101+ except Exception as e :
102+ self .log ("删除表失败,失败原因为:{},sql语句为:{}" .format (e , sql ),LEVEL = "ERROR" )
66103
104+ def judgement_value_type (self ,value ):
105+ if type (value ) == bool :
106+ return int (value )
107+ else :
108+ return value
67109
68110 def insert (self , data ):
69111 """:插入一条数据
70112 data:插入的数据
71113 """
72- self .db = sqlite3 .connect (self ._db_name , check_same_thread = False )
73- self .cursor = self .db .cursor ()
74114 sql_str = "INSERT OR IGNORE INTO {} (" .format (self .table_name )
75- try :
76- for data_key in data .keys ():
77- if type (data [data_key ]) == str :
78- if len (data [data_key ]) > 0 :
79- sql_str = sql_str + data_key + ","
80- elif type (data [data_key ]) == int :
81- sql_str = sql_str + data_key + ","
82- elif type (data [data_key ]) == bool :
83- sql_str = sql_str + data_key + ","
84- sql_str = sql_str [:- 1 ] + ") VALUES ("
85- for data_key in data .keys ():
86- if type (data [data_key ]) == str :
87- if len (data [data_key ]) > 0 :
88- sql_str = sql_str + "'{}'" .format (data [data_key ]) + ","
89- elif type (data [data_key ]) == int :
90- sql_str = sql_str + "{}" .format (data [data_key ]) + ","
91- elif type (data [data_key ]) == bool :
92- sql_str = sql_str + "{}" .format (int (data [data_key ])) + ","
93- sql_str = sql_str [:- 1 ] + ")"
94- self .lock .acquire ()
95- self .cursor .execute (sql_str )
96- self .db .commit ()
97- self .lock .release ()
98- except Exception as e :
99- if self .JadeLog :
100- self .JadeLog .ERROR ("插入数据表失败,失败原因为{},sql语句为{}" .format (e , sql_str ))
115+ for data_key in data .keys ():
116+ sql_str = sql_str + data_key + ","
101117
118+ sql_str = sql_str [:- 1 ] + ") VALUES ("
119+ for data_key in data .keys ():
120+ sql_str = sql_str + "'{}'" .format (self .judgement_value_type (data [data_key ])) + ","
121+ sql_str = sql_str [:- 1 ] + ")"
122+ self .base_update (sql_str )
102123
103124 def query (self , start_time , end_time ):
104125 """:查询所有的数据
105126 return:表单
106127 """
107- self .db = sqlite3 .connect (self ._db_name , check_same_thread = False )
108- self .cursor = self .db .cursor ()
109- sql_str = "SELECT * FROM {} where rec_date >'{}' and rec_date<'{}'" .format (self .table_name , start_time ,
110- end_time )
111- try :
112- self .lock .acquire ()
113- self .cursor .execute (sql_str )
114- results = self .cursor .fetchall ()
115- self .lock .release ()
116- return results
117- except Exception as e :
118- if self .JadeLog :
119- self .JadeLog .ERROR ("查询表失败,失败原因为{},sql语句为{}" .format (e , sql_str ))
120- pass
128+ sql_str = "SELECT * FROM {} where rec_date >'{}' and rec_date<'{}'" .format (self .table_name , start_time ,end_time )
129+ return self .base_query (sql_str )
130+
121131
122132 def clear (self ):
123- self .db = sqlite3 .connect (self ._db_name , check_same_thread = False )
124- self .cursor = self .db .cursor ()
125133 sql_str = "DELETE FROM {}" .format (self .table_name )
126- try :
127- self .cursor .execute (sql_str )
128- self .db .commit ()
129- self .cursor .execute ("VACUUM" )
130- self .db .commit ()
131- except Exception as e :
132- self .JadeLog .ERROR ("插入数据表失败,失败原因为{},sql语句为{}" .format (e , sql_str ))
133-
134-
134+ self .base_delete (sql_str )
135135
0 commit comments