gpt4 book ai didi

python - SQLite3 列不唯一

转载 作者:搜寻专家 更新时间:2023-10-30 22:35:29 25 4
gpt4 key购买 nike

我正在使用我编写的 python 脚本将一些 csv 文件中的数据插入到我的 SQLite3 数据库中。当我运行脚本时,它会将第一行插入数据库,但在尝试插入第二行时出现此错误:

sqlite3.IntegrityError: columns column_name1, column_name2 are not unique.

确实,在 csv 文件的前两行中,column_name1 和 column_name2 中的值是相同的。但是,这对我来说似乎有点奇怪,因为阅读此错误表明它表示对数据库的一个或多个列的唯一性约束。我使用 SQLite Expert Personal 检查了数据库详细信息,它没有显示当前表的任何唯一性约束。此外,我输入的字段均未指定主键。似乎数据库会自动分配那些。关于什么可能导致此错误的任何想法?谢谢。

import sqlite3
import csv

if __name__ == '__main__' :

conn = sqlite3.connect('ts_database.sqlite3')
c = conn.cursor()

fileName = "file_name.csv"
f = open(fileName)
csv_f = csv.reader(f)

for row in csv_f:
command = "INSERT INTO table_name(column_name1, column_name2, column_name3)"
command += " VALUES (%s, '%s', %s);" % (row[0],row[1],row[2])
print command
c.execute(command)
conn.commit()

f.close()

最佳答案

如果 SQLite 报告 IntegrityError 错误,那很可能在这两列上确实有 PRIMARY KEY 或 UNIQUE KEY,而当您声明没有时,您就错了。确保您真正查看的是数据库的同一个实例。

此外,不要使用字符串插值编写 SQL 语句。这很危险,也很难得到正确的结果(考虑到您在其中一个字段上有单引号,您可能知道这一点)。在 SQLite 中使用参数化语句非常非常简单。

关于python - SQLite3 列不唯一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37974508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com