创建一个名为“庫存明細”的表格,如果不存在的话 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))修改這段代碼,不能將第2個循環把歷史記錄給更改了
时间: 2024-02-10 20:25:19 浏览: 33
你可以通过在第二个循环之前添加一个条件语句来避免更改历史记录。在这个条件语句中,可以检查当前行是否为空,如果为空,则跳过更新语句。修改后的代码如下所示:
```python
# 将下拉输入框中的内容按行写入表格的后续列
for i, value in enumerate(combobox_values):
# 检查当前行是否为空
if text.split("\n")[i+1].strip() != "":
# 执行SQL插入语句,将数据写入表格的后续列
cursor.execute(
"UPDATE {} SET 點檢狀態 = ?, 點檢日期 = ?, 點檢時間 = ?, 點檢人 = ?, 點檢綫別 = ?, 點檢班別 = ?, 機種 = ?, 點檢表名稱 = ?, IP地址 = ?, 用戶名 = ?".format(
data41),
(value, data1, data2, data3, data4, data5, data6, sheet_name, ip_address, username))
```
这样,只有非空行才会执行更新语句,历史记录的值将不会被更改。
相关问题
解释代码def toCreateTable(self): cursor = self.conn.cursor() cursor.execute("create table IF NOT EXISTS person(id INTEGER primary key autoincrement, personName varchar(60),personPwd varchar(60))")
这段代码是一个Python函数,用于创建一个名为"person"的表格(table)。
首先,通过`self.conn.cursor()`创建了一个游标(cursor)对象,用于执行SQL语句。
然后,调用`cursor.execute()`方法执行SQL语句。在这里,执行的是一个CREATE TABLE语句,用于创建一个名为"person"的表格。
CREATE TABLE语句的具体内容是:"create table IF NOT EXISTS person(id INTEGER primary key autoincrement, personName varchar(60),personPwd varchar(60))"。
这个语句指定了表格的结构和列的属性。该表格包含了三列:id、personName和personPwd。其中,id列是主键(PRIMARY KEY),并且使用了autoincrement关键字表示自动递增。personName和personPwd列都是varchar类型,并且限制了最大长度为60个字符。
在CREATE TABLE语句中,还使用了IF NOT EXISTS关键字,表示如果表格不存在才创建。这样可以避免重复创建表格导致的错误。
通过执行这段代码,可以创建一个名为"person"的表格,并定义了相应的列和属性。
data4 = self.la # 创建一个名为“庫存明細”的表格,如果不存在的话 cursor.execute('''CREATE TABLE IF NOT EXISTS data4 (id INTEGER PRIMARY KEY, 料號 TEXT NOT NULL, 儲位 INTEGER, 品名 INTEGER, 數量 INTEGER, 月使用量 INTEGER, 單價 INTEGER, 日期 INTEGER, 時間 INTEGER, 登記人 INTEGER, 入庫單號 INTEGER )''') # 提交更改(必须) conn.commit() 修改這段代碼將data4 = self.la獲取的變量為表格的名字
要将变量`data4`替换为表格的名字,您可以直接将其作为参数传递给`CREATE TABLE`语句中的表格名称。以下是修改后的代码示例:
```python
table_name = "data4"
# 创建一个名为“庫存明細”的表格,如果不存在的话
cursor.execute(f'''CREATE TABLE IF NOT EXISTS {table_name}
(id INTEGER PRIMARY KEY,
料號 TEXT NOT NULL,
儲位 INTEGER,
品名 INTEGER,
數量 INTEGER,
月使用量 INTEGER,
單價 INTEGER,
日期 INTEGER,
時間 INTEGER,
登記人 INTEGER,
入庫單號 INTEGER
)''')
# 提交更改(必须)
conn.commit()
```
在上述示例中,我们将`data4`变量替换为`table_name`,并将其作为格式化字符串中的表格名称参数传递给`CREATE TABLE`语句。
请确保在使用新的表格名称之前对其进行验证和清理,以防止任何潜在的安全风险。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)