def refresh_labels(self): data4 = self.la # 连接到 SQLite 数据库文件,并创建游标对象 cursor() conn = sqlite3.connect(filepath) cursor = conn.cursor() data41 = str(self.la) if not data4.endswith('.xlsx'): data4 += '.xlsx' wo = pinjie filepath = os.path.join(wo, data4) if not os.path.exists(filepath): wb = openpyxl.Workbook() wb.save(filepath) else: wb = openpyxl.load_workbook(filepath) for i, sheet_name in enumerate(self.sheet_names): label = tk.Label(self.unique_listbox, text=sheet_name) label.grid(row=i // 3, column=i % 3, sticky="ew", padx=1, pady=1) current_time = datetime.datetime.now().time() start_time_1 = datetime.time(8, 0, 0) # 早上8点 end_time_1 = datetime.time(20, 0, 0) # 下午7点 start_time_2 = datetime.time(20, 0, 0) # 晚上8点 end_time_2 = datetime.time(7, 0, 0) # 早上7点 for i, sheet_name in enumerate(self.sheet_names): filtered_rows = [] # 优化第二段代码:检查文件是否存在 filepath = os.path.join(pinjie, self.la + '.xlsx') if os.path.exists(filepath): workbook = xl.load_workbook(filepath) sheet = workbook.active today = datetime.datetime.now().strftime('%Y/%m/%d') cell_value = sheet.cell(row=1, column=1).value if cell_value is not None and cell_value != '': for row in sheet.iter_rows(min_row=1): if row[2].value == today and row[8].value == sheet_name: datetime_obj = datetime.datetime.strptime(row[3].value, '%H:%M:%S') row_time = datetime_obj.time() if start_time_1 <= row_time <= end_time_1 and start_time_1 <= current_time <= end_time_1: filtered_rows.append(row) elif start_time_2 <= row_time or current_time <= end_time_2: filtered_rows.append(row) label = self.unique_listbox.grid_slaves(row=i // 3, column=i % 3)[0] if filtered_rows: label.config(text=f"{sheet_name} - 已點檢", fg="green") else: label.config(text=f"{sheet_name} - 未點檢", fg="red")將這段代碼從excel判斷修改為sqlite3,需求不變
时间: 2024-02-14 12:28:02 浏览: 197
DDNS.rar_Refresh_ Refresh_ddns_site:www.pudn.com_应答器
要将代码从Excel判断修改为SQLite3判断,您可以按照以下步骤进行修改:
1. 首先,确保您已经导入了`sqlite3`模块以进行SQLite3数据库的操作。
2. 将连接到SQLite数据库的部分从注释中取消,并将`filepath`变量设置为正确的数据库文件路径:
```python
# 连接到 SQLite 数据库文件,并创建游标对象 cursor()
conn = sqlite3.connect(filepath)
cursor = conn.cursor()
```
3. 将Excel文件相关的部分进行替换。您需要根据SQLite3数据库的结构和查询语句来执行查询并获取结果。以下是一个示例,您可以根据实际需求进行修改:
```python
# 构建查询语句
query = f"SELECT * FROM your_table WHERE 點檢日期 = '{today}' AND 列名 = '{sheet_name}'"
# 执行查询
cursor.execute(query)
# 获取查询结果
rows = cursor.fetchall()
# 判断是否有符合条件的行
if rows:
label.config(text=f"{sheet_name} - 已點檢", fg="green")
else:
label.config(text=f"{sheet_name} - 未點檢", fg="red")
```
请注意,您需要将上述示例中的`your_table`替换为实际的表格名称,`點檢日期`替换为实际的日期列名,`列名`替换为实际要筛选的列名。
4. 最后,不要忘记在适当的位置关闭数据库连接:
```python
# 关闭数据库连接
conn.close()
```
请根据您的实际需求进行修改和调整。这样修改后,您的代码将使用SQLite3数据库进行查询和判断,而不是Excel文件。
请注意,在修改代码之前,确保已经正确安装了SQLite3并且具有相应的数据库文件和表格。
阅读全文