优化下面python代码 _sql_list = "select e.*,t.type from event e left join event_type t on e.event_type = t.id " if event_name: _sql_list += f" where event_name like '%{event_name}%'" if source_address: _sql_list += f" where source_address like '%{source_address}%'" if target_address: _sql_list += f" where target_address like '%{target_address}%'" if event_type: _sql_list += f" where event_type = '%{event_type}%'" if state: _sql_list += f" where state = '%{state}%'" if disposer_name: _sql_list += f" where disposer_name like '%{disposer_name}%'" if start_time: _sql_list += f" where create_time >= '%{start_time}%'" if end_time: _sql_list += f" where create_time <= '%{end_time}%'"
时间: 2024-04-08 19:29:18 浏览: 23
下面是对上述代码的优化:
```python
_sql_list = "select e.*, t.type from event e left join event_type t on e.event_type = t.id"
conditions = []
if event_name:
conditions.append(f"event_name like '%{event_name}%'")
if source_address:
conditions.append(f"source_address like '%{source_address}%'")
if target_address:
conditions.append(f"target_address like '%{target_address}%'")
if event_type:
conditions.append(f"event_type = '{event_type}'")
if state:
conditions.append(f"state = '{state}'")
if disposer_name:
conditions.append(f"disposer_name like '%{disposer_name}%'")
if start_time:
conditions.append(f"create_time >= '{start_time}'")
if end_time:
conditions.append(f"create_time <= '{end_time}'")
if conditions:
_sql_list += " where " + " and ".join(conditions)
```
通过将各个条件存储在一个列表中,然后在构建 SQL 查询语句时使用字符串连接,可以避免重复使用 `where` 关键字。这样可以更清晰地构建查询条件,并减少代码中的重复部分。