ezKit 1.12.38__py3-none-any.whl → 1.12.40__py3-none-any.whl

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/database.py CHANGED
@@ -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 1, 10
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
- if field == "date" or field.startswith("date__"):
137
- field = field.replace("date", "datetime::date", 1)
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 field:
212
+ if "__" in base_field:
140
213
 
141
- base, op = field.split("__", 1)
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 == "ge":
154
- sql_parts.append(f"{base} >= :{param_key}")
155
- param_dict[param_key] = value
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
- param_key = field
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:
ezKit/errors.py CHANGED
@@ -26,7 +26,7 @@ database_error = {
26
26
  },
27
27
  "update": {
28
28
  "code": 3003,
29
- "message": "Database create data error",
29
+ "message": "Database update data error",
30
30
  },
31
31
  "delete": {
32
32
  "code": 3004,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ezKit
3
- Version: 1.12.38
3
+ Version: 1.12.40
4
4
  Summary: Easy Kit
5
5
  Author: septvean
6
6
  Author-email: septvean@gmail.com
@@ -3,9 +3,9 @@ ezKit/_file.py,sha256=0qRZhwYuagTgTGrhm-tzAMvEQT4HTJA_xZKqF2bo0ho,1207
3
3
  ezKit/bottle.py,sha256=43h4v1kzz6qrLvCt5IMN0H-gFtaT0koG9wETqteXsps,181666
4
4
  ezKit/bottle_extensions.py,sha256=27rogmfK7mL2qUSjXH79IMGZbCVULtYEikql_N9O6Zs,1165
5
5
  ezKit/cipher.py,sha256=7jBarRH7ukSYzkz-Anl8B8JzluhnRz4CLHidPRRj_cg,2939
6
- ezKit/database.py,sha256=WshuIth4uCe-tSoCz8O8hhU-HHvAa-U7B8vD0mFtxVM,30239
6
+ ezKit/database.py,sha256=rhHmW_ggcbvAW67BUeVyDryzdLYnuAgwZmpzaxWJ5vQ,32264
7
7
  ezKit/dockerhub.py,sha256=j-wQO-71BsOgExHZhYynuy2k_hCX3on-vg0TH7QCit4,1996
8
- ezKit/errors.py,sha256=htTi7vKClHGHf2MX2G88PKr0zzUrFiUHEsrmfqj1Fx8,1425
8
+ ezKit/errors.py,sha256=92PggwPQfTS3Vg4og7GHYnO9CTSM7zmuh2w3kx_tSBE,1425
9
9
  ezKit/fastapix.py,sha256=-nz565ASKvp3nGs9J4wORTHxlhMozqCwv8zREWpmYtI,3382
10
10
  ezKit/http.py,sha256=zhNxJF-x91UqGncXWxVXnhZVpFo_wmmpGnMXVT11y9E,1832
11
11
  ezKit/markdown_to_html.template,sha256=21G2sSVGJn6aJvHd0NN4zY5YiDteKe4UtW36AzBwSdk,22274
@@ -17,8 +17,8 @@ ezKit/token.py,sha256=Ac-i9xfq4TqpGyfCzakjrh4NYzxHiN2sCQrMk1tzVi8,1716
17
17
  ezKit/utils.py,sha256=U457ahFkxIXuB-qWvS3995xJs-LlkFIX5_ZWVgmL5cY,43130
18
18
  ezKit/xftp.py,sha256=-XQXyhMqeigT63P6sXkSS7r4GROXyqqlkzKxITLWG-g,8278
19
19
  ezKit/zabbix.py,sha256=PkMnfu7mcuotwwIIsHaC9FsNg-gap6hD1xvm0AwSL1Y,33777
20
- ezkit-1.12.38.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
21
- ezkit-1.12.38.dist-info/METADATA,sha256=UszRq0LKLQkfo-hC8Wm9qQkkYZKEoTIZLU8M5PLpPz0,317
22
- ezkit-1.12.38.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
23
- ezkit-1.12.38.dist-info/top_level.txt,sha256=aYLB_1WODsqNTsTFWcKP-BN0KCTKcV-HZJ4zlHkCFw8,6
24
- ezkit-1.12.38.dist-info/RECORD,,
20
+ ezkit-1.12.40.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
21
+ ezkit-1.12.40.dist-info/METADATA,sha256=U0NH_c0e9FE37wrCoJHBmW3Ot2LVMXCU3fkFhMVXMN0,317
22
+ ezkit-1.12.40.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
23
+ ezkit-1.12.40.dist-info/top_level.txt,sha256=aYLB_1WODsqNTsTFWcKP-BN0KCTKcV-HZJ4zlHkCFw8,6
24
+ ezkit-1.12.40.dist-info/RECORD,,