# 创建一个名为“庫存明細”的表格,如果不存在的话 cursor.execute('''CREATE TABLE IF NOT EXISTS {} (id INTEGER PRIMARY KEY, 點檢内容 INTEGER, 點檢狀態 INTEGER, 點檢日期 INTEGER, 點檢時間 INTEGER, 點檢人 INTEGER, 點檢綫別 INTEGER, 點檢班別 INTEGER, 機種 INTEGER, 點檢表名稱 INTEGER, IP地址 INTEGER, 用戶名 INTEGER )'''.format(data41)) # 提交更改(必须) conn.commit() data4 = self.la # 获取工作表的最后一行 last_row = cursor.execute("SELECT MAX(id) FROM {}".format(data41)).fetchone()[0] # 将文本框中的内容按行写入表格的第一列 for i, line in enumerate(text.split("\n")): if line.strip() != "": # 第一行不写入 if i != 0: # 执行SQL插入语句,将数据写入表格的第一列(不写入ID字段) cursor.execute("INSERT INTO {} (點檢内容) VALUES (?)".format(data41), (line.strip(),)) # 将下拉输入框中的内容按行写入表格的后续列 for i, value in enumerate(combobox_values): # 执行SQL插入语句,将数据写入表格的后续列 cursor.execute( "UPDATE {} SET 點檢狀態 = ?, 點檢日期 = ?, 點檢時間 = ?, 點檢人 = ?, 點檢綫別 = ?, 點檢班別 = ?, 機種 = ?, 點檢表名稱 = ?, IP地址 = ?, 用戶名 = ?".format( data41), (value, data1, data2, data3, data4, data5, data6, sheet_name, ip_address, username)) # 提交更改并关闭数据库连接 conn.commit() conn.close()這段代碼中第2個循環不能把原本是記錄給覆蓋或更改掉
时间: 2024-02-10 07:25:13 浏览: 74
在这段代码中,第二个循环是用来将下拉输入框中的内容按行写入表格的后续列的。根据你的描述,你不希望该循环覆盖或更改原本的记录。
为了实现这一点,你可以在循环之前添加一行代码来检查是否已经存在记录。如果存在记录,则跳过写入操作。可以使用SELECT语句来检查是否存在记录。
以下是修改后的代码示例:
```python
# 将下拉输入框中的内容按行写入表格的后续列
for i, value in enumerate(combobox_values):
# 检查是否已经存在记录
existing_record = cursor.execute("SELECT * FROM {} WHERE id = ?".format(data41), (last_row + i + 1,)).fetchone()
if existing_record is None:
# 执行SQL插入语句,将数据写入表格的后续列
cursor.execute(
"UPDATE {} SET 點檢狀態 = ?, 點檢日期 = ?, 點檢時間 = ?, 點檢人 = ?, 點檢綫別 = ?, 點檢班別 = ?, 機種 = ?, 點檢表名稱 = ?, IP地址 = ?, 用戶名 = ? WHERE id = ?".format(
data41),
(value, data1, data2, data3, data4, data5, data6, sheet_name, ip_address, username, last_row + i + 1))
# 提交更改并关闭数据库连接
conn.commit()
conn.close()
```
这样,如果已经存在记录,则会跳过写入操作,只会写入新的记录。
希望能对你有所帮助!如果还有其他问题,请随时提问。
阅读全文