gpt4 book ai didi

python - sqlite3 OperationalError异常

转载 作者:行者123 更新时间:2023-12-03 08:26:08 25 4
gpt4 key购买 nike

我当前正在尝试通读csv文件,获取所述csv文件的内容,然后将其放入sqlite3数据库中。我不断得到

OperationalError('near "s": syntax error')



通常,我会认为这是代码罪魁祸首中的一个简单错误。

然而,有趣的是,在我们遇到此异常之前,程序运行了csv文件的7行:

enter image description here

我检查了csv文件中的以下行,您可以在此处看到它:

enter image description here

据我所知,那里没有“异常”值。

最后,下面是完整的代码:
def readData(filename, sqlite_file):

conn = sqlite3.connect(sqlite_file)
c = conn.cursor()

with open(filename) as CSVfile:
csvReader = csv.reader(CSVfile)
headers = next(csvReader)

for row in csvReader:
print(row[26] + ' ' + row[15] + ' ' + row[16] + ' ' + row[21] + ' ' + row[22] + ' ' + row[23] + ' ' + row[24] + ' ' + row[17])
tableName = 'Sponsor'
c.execute('INSERT INTO {tn} VALUES ({v1}, {v2}, {v3}, {v4}, {v5}, {v6}, {v7}, {v8})'.format(tn=tableName, v1=row[26], v2=str("'"+ row[15] +"'"), v3="'"+ row[16] +"'", v4="'"+ row[21] +"'", v5="'"+ row[22] +"'", v6= "'"+ row[23] +"'", v7= "'"+ row[24] +"'", v8= "'"+ row[17] +"'"))

最佳答案

如果您自己格式化查询,则还需要处理引号字符串参数。相反,您可以让sqlite库为您完成繁重的工作并参数化您的语句。请注意,对象名称无法参数化,因此您仍然必须在其中格式化表名称:

c.execute('INSERT INTO {tn}  VALUES (?, ?, ?, ?, ?, ?, ?, ?)'.format(tn=tableName),
[row[26], row[15], row[16], row[21], row[22], row[23], row[24], row[17]])

关于python - sqlite3 OperationalError异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55897567/

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