ezKit 1.12.38__tar.gz → 1.12.40__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ezkit-1.12.38/ezKit.egg-info → ezkit-1.12.40}/PKG-INFO +1 -1
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit/database.py +84 -35
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit/errors.py +1 -1
- {ezkit-1.12.38 → ezkit-1.12.40/ezKit.egg-info}/PKG-INFO +1 -1
- {ezkit-1.12.38 → ezkit-1.12.40}/setup.py +1 -1
- {ezkit-1.12.38 → ezkit-1.12.40}/LICENSE +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/MANIFEST.in +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/README.md +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit/__init__.py +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit/_file.py +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit/bottle.py +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit/bottle_extensions.py +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit/cipher.py +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit/dockerhub.py +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit/fastapix.py +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit/http.py +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit/markdown_to_html.template +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit/mongo.py +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit/qywx.py +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit/redis.py +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit/sendemail.py +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit/token.py +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit/utils.py +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit/xftp.py +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit/zabbix.py +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit.egg-info/SOURCES.txt +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit.egg-info/dependency_links.txt +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit.egg-info/requires.txt +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/ezKit.egg-info/top_level.txt +0 -0
- {ezkit-1.12.38 → ezkit-1.12.40}/setup.cfg +0 -0
@@ -40,6 +40,7 @@ def get_limit_offset(page_index: int, page_size: int) -> tuple[int, int]:
|
|
40
40
|
page_size (int): 每页数量, 必须 > 0
|
41
41
|
|
42
42
|
返回:
|
43
|
+
|
43
44
|
(limit, offset): limit 表示取多少条,offset 表示跳过多少条
|
44
45
|
"""
|
45
46
|
try:
|
@@ -60,7 +61,7 @@ def get_limit_offset(page_index: int, page_size: int) -> tuple[int, int]:
|
|
60
61
|
|
61
62
|
except Exception as e:
|
62
63
|
logger.exception(e)
|
63
|
-
return
|
64
|
+
return 10, 0
|
64
65
|
|
65
66
|
|
66
67
|
# --------------------------------------------------------------------------------------------------
|
@@ -122,6 +123,78 @@ def build_sqlalchemy_where_clause(data: dict) -> Optional[Tuple[str, Dict[str, A
|
|
122
123
|
- 返回: (SQL 子句字符串, 参数 dict, bindparams 列表)
|
123
124
|
"""
|
124
125
|
|
126
|
+
# try:
|
127
|
+
|
128
|
+
# _data = deepcopy(data)
|
129
|
+
|
130
|
+
# sql_parts = []
|
131
|
+
# param_dict = {}
|
132
|
+
# bind_params = []
|
133
|
+
|
134
|
+
# for field, value in _data.items():
|
135
|
+
|
136
|
+
# # 特殊处理日期字段
|
137
|
+
# if field == "date" or field.startswith("date__"):
|
138
|
+
# field = field.replace("date", "datetime::date", 1)
|
139
|
+
|
140
|
+
# if "__" in field:
|
141
|
+
|
142
|
+
# base, op = field.split("__", 1)
|
143
|
+
|
144
|
+
# # 避免字段名冲突
|
145
|
+
# param_key = f"{base}_{op}"
|
146
|
+
|
147
|
+
# # 特殊处理日期字段
|
148
|
+
# if param_key.startswith("datetime::date"):
|
149
|
+
# param_key = param_key.replace("datetime::date", "datetime_date", 1)
|
150
|
+
|
151
|
+
# if op == "like":
|
152
|
+
# sql_parts.append(f"{base} LIKE :{param_key}")
|
153
|
+
# param_dict[param_key] = f"%{value}%"
|
154
|
+
# elif op == "ge":
|
155
|
+
# sql_parts.append(f"{base} >= :{param_key}")
|
156
|
+
# param_dict[param_key] = value
|
157
|
+
# elif op == "gt":
|
158
|
+
# sql_parts.append(f"{base} > :{param_key}")
|
159
|
+
# param_dict[param_key] = value
|
160
|
+
# elif op == "le":
|
161
|
+
# sql_parts.append(f"{base} <= :{param_key}")
|
162
|
+
# param_dict[param_key] = value
|
163
|
+
# elif op == "lt":
|
164
|
+
# sql_parts.append(f"{base} < :{param_key}")
|
165
|
+
# param_dict[param_key] = value
|
166
|
+
# elif op == "ne":
|
167
|
+
# sql_parts.append(f"{base} != :{param_key}")
|
168
|
+
# param_dict[param_key] = value
|
169
|
+
# elif op == "in" and isinstance(value, list):
|
170
|
+
# sql_parts.append(f"{base} IN :{param_key}")
|
171
|
+
# param_dict[param_key] = value
|
172
|
+
# bind_params.append(bindparam(param_key, expanding=True))
|
173
|
+
# elif op == "between" and isinstance(value, list) and len(value) == 2:
|
174
|
+
# sql_parts.append(f"{base} BETWEEN :{param_key}_start AND :{param_key}_end")
|
175
|
+
# param_dict[f"{param_key}_start"] = value[0]
|
176
|
+
# param_dict[f"{param_key}_end"] = value[1]
|
177
|
+
|
178
|
+
# else:
|
179
|
+
|
180
|
+
# param_key = field
|
181
|
+
|
182
|
+
# # 特殊处理日期字段
|
183
|
+
# if param_key.startswith("datetime::date"):
|
184
|
+
# param_key = param_key.replace("datetime::date", "datetime_date", 1)
|
185
|
+
|
186
|
+
# sql_parts.append(f"{field} = :{param_key}")
|
187
|
+
|
188
|
+
# param_dict[param_key] = value
|
189
|
+
|
190
|
+
# where_clause = " AND ".join(sql_parts)
|
191
|
+
|
192
|
+
# return where_clause, param_dict, bind_params
|
193
|
+
|
194
|
+
# except Exception as e:
|
195
|
+
# logger.exception(e)
|
196
|
+
# return None
|
197
|
+
|
125
198
|
try:
|
126
199
|
|
127
200
|
_data = deepcopy(data)
|
@@ -133,37 +206,22 @@ def build_sqlalchemy_where_clause(data: dict) -> Optional[Tuple[str, Dict[str, A
|
|
133
206
|
for field, value in _data.items():
|
134
207
|
|
135
208
|
# 特殊处理日期字段
|
136
|
-
|
137
|
-
|
209
|
+
is_date_field = field == "date" or field.startswith("date__")
|
210
|
+
base_field = field.replace("date", "datetime::date", 1) if is_date_field else field
|
138
211
|
|
139
|
-
if "__" in
|
212
|
+
if "__" in base_field:
|
140
213
|
|
141
|
-
base, op =
|
214
|
+
base, op = base_field.split("__", 1)
|
142
215
|
|
143
216
|
# 避免字段名冲突
|
144
|
-
param_key = f"{base}_{op}"
|
145
|
-
|
146
|
-
# 特殊处理日期字段
|
147
|
-
if param_key.startswith("datetime::date"):
|
148
|
-
param_key = param_key.replace("datetime::date", "datetime_date", 1)
|
217
|
+
param_key = f"{base.replace('.', '_')}_{op}"
|
149
218
|
|
150
219
|
if op == "like":
|
151
220
|
sql_parts.append(f"{base} LIKE :{param_key}")
|
152
221
|
param_dict[param_key] = f"%{value}%"
|
153
|
-
elif op
|
154
|
-
|
155
|
-
|
156
|
-
elif op == "gt":
|
157
|
-
sql_parts.append(f"{base} > :{param_key}")
|
158
|
-
param_dict[param_key] = value
|
159
|
-
elif op == "le":
|
160
|
-
sql_parts.append(f"{base} <= :{param_key}")
|
161
|
-
param_dict[param_key] = value
|
162
|
-
elif op == "lt":
|
163
|
-
sql_parts.append(f"{base} < :{param_key}")
|
164
|
-
param_dict[param_key] = value
|
165
|
-
elif op == "ne":
|
166
|
-
sql_parts.append(f"{base} != :{param_key}")
|
222
|
+
elif op in ("ge", "gt", "le", "lt", "ne"):
|
223
|
+
operator = {"ge": ">=", "gt": ">", "le": "<=", "lt": "<", "ne": "!="}[op]
|
224
|
+
sql_parts.append(f"{base} {operator} :{param_key}")
|
167
225
|
param_dict[param_key] = value
|
168
226
|
elif op == "in" and isinstance(value, list):
|
169
227
|
sql_parts.append(f"{base} IN :{param_key}")
|
@@ -173,21 +231,12 @@ def build_sqlalchemy_where_clause(data: dict) -> Optional[Tuple[str, Dict[str, A
|
|
173
231
|
sql_parts.append(f"{base} BETWEEN :{param_key}_start AND :{param_key}_end")
|
174
232
|
param_dict[f"{param_key}_start"] = value[0]
|
175
233
|
param_dict[f"{param_key}_end"] = value[1]
|
176
|
-
|
177
234
|
else:
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
# 特殊处理日期字段
|
182
|
-
if param_key.startswith("datetime::date"):
|
183
|
-
param_key = param_key.replace("datetime::date", "datetime_date", 1)
|
184
|
-
|
185
|
-
sql_parts.append(f"{field} = :{param_key}")
|
186
|
-
|
235
|
+
param_key = base_field.replace(".", "_")
|
236
|
+
sql_parts.append(f"{base_field} = :{param_key}")
|
187
237
|
param_dict[param_key] = value
|
188
238
|
|
189
239
|
where_clause = " AND ".join(sql_parts)
|
190
|
-
|
191
240
|
return where_clause, param_dict, bind_params
|
192
241
|
|
193
242
|
except Exception as e:
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|