将列表中的值插入到表中(Python,sqlite3)



我有一个简单的代码,我无法工作。

import sqlite3
conn = sqlite3.connect('db\books')
c = conn.cursor()
col = []
title = input('title')
text = input('text')
tags = input('tags')
col.append(title)
col.append(text)
col.append(tags)
c.executescript("INSERT INTO books (title,text,tags) "
"VALUES (col[0],col[1],col[2])")

db代码(连接和正常插入)有效,但是当我想执行您在上面看到的操作时,问题就会出现。

我想实现的目标是让用户将数据插入数据库(所有字符串)。我不知道这是否是正确的方法...

我该怎么做?

谢谢

一种选择是将最后一行更改为:

c.execute("INSERT INTO books (title,text,tags) VALUES (?,?,?)", (col[0], col[1], col[2]))

然后提交并关闭连接(如果已完成更改):

conn.commit()
conn.close()

这一行:

c.executescript("INSERT INTO books (title,text,tags) "
"VALUES (col[0],col[1],col[2])")

不是有效的 SQL。现在,由于c被定义为游标,因此您可以直接从它运行execute而不是executescript,后者假设从连接创建游标并执行SQL。只需将该行替换为以下内容即可:

c.execute("INSERT INTO books (title,text,tags) "
"VALUES (?,?,?)", col)

上面的 SQL 使用"qmark 样式"占位符,它从它后面的参数列表中获取实际值。

相关内容

  • 没有找到相关文章

最新更新