Skip to content

Commit 7b1e269

Browse files
committed
* 优化数据库父类操作,解决异常问题,代码优化
1 parent a1ed654 commit 7b1e269

File tree

2 files changed

+86
-82
lines changed

2 files changed

+86
-82
lines changed

CONTRIBUTING.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
### 更新日志
22

3-
#### JadeV2.2.4 - 2024-05-17
4-
* 解决打包出现的日志重复的bug
3+
#### JadeV2.2.5 - 2024-05-27
4+
* 优化数据库父类操作,解决异常问题,代码优化
55
---
66

77
<details onclose>
88
<summary>查看更多更新日志</summary>
99

10+
#### JadeV2.2.4 - 2024-05-17
11+
* 解决打包出现的日志重复的bug
12+
---
13+
1014
#### JadeV2.2.3 - 2024-05-09
1115
* packing模块支持src目录下的packages
1216
---

jade/jade_sqlite_data_base.py

Lines changed: 80 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)