sqlite3.IntegrityError: UNIQUE constraint failed: NB綫.id報這個錯誤
时间: 2024-04-12 16:28:05 浏览: 168
sqlite3.lib
这个错误提示表明在插入数据时违反了唯一性约束,可能是由于重复的ID值导致的。为了解决这个问题,你可以使用INSERT OR IGNORE语句来插入数据,它会忽略重复的数据而不会引发错误。修改后的代码如下:
```python
# 遍历源数据库中的所有表格
for table in tables:
table_name = table[0]
# 读取源表格数据
source_cursor.execute(f"SELECT DISTINCT * FROM {table_name};")
data = source_cursor.fetchall()
# 获取源表格的列名
source_cursor.execute(f"PRAGMA table_info({table_name});")
columns = [column[1] for column in source_cursor.fetchall() if column[1] != 'ID']
# 创建目标表格(如果不存在)
cursor.execute(f"CREATE TABLE IF NOT EXISTS {table_name} ({','.join(columns)});")
# 插入源表格数据到目标表格
insert_statement = f"INSERT OR IGNORE INTO {table_name} ({','.join(columns)}) VALUES ({','.join(['?'] * len(columns))});"
cursor.executemany(insert_statement, data)
```
这样修改后,在插入数据时如果遇到重复的数据,会自动忽略而不会引发错误。希望这能帮助到你解决问题。
阅读全文