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

将列表中的值插入表(Python、sqlite3),python,list,sqlite,Python,List,Sqlite,我有一个简单的代码,我不能让它工作 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 boo

我有一个简单的代码,我不能让它工作

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代码(连接和正常插入)可以工作,但是当我想做上面看到的事情时,问题就出现了

我希望实现的目标是让用户将数据插入db(所有字符串)。我不知道这样做是否正确

我该怎么做

谢谢这一行:

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 style”占位符,它从它后面的参数列表中获取实际值。

此行:

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样式”占位符,它从它后面的参数列表中获取实际值。

一个选项是将最后一行更改为:

c.execute("INSERT INTO books (title,text,tags) VALUES (?,?,?)", (col[0], col[1], col[2]))
然后提交并关闭连接(如果已完成更改):

conn.commit()
conn.close()

一个选项是将最后一行更改为:

c.execute("INSERT INTO books (title,text,tags) VALUES (?,?,?)", (col[0], col[1], col[2]))
然后提交并关闭连接(如果已完成更改):

conn.commit()
conn.close()

TypeError:函数只接受1个参数(给定2个)
c.execute()
根据。艾德里安·谭的例子在我看来也不错。确实调用了正确的函数吗?事实上,错误是通过
c.executescript()
产生的。使用
c.execute
不会显示任何错误,但它不会执行任何操作…理解错误…我没有复制conn.commit()。多亏了all.TypeError:函数只接受1个参数(给定2个)
c.execute()
根据。艾德里安·谭的例子在我看来也不错。确实调用了正确的函数吗?事实上,错误是通过
c.executescript()
产生的。使用
c.execute
不会显示任何错误,但它不会执行任何操作…理解错误…我没有复制conn.commit()。感谢all.TypeError:函数只接受1个参数(2个给定)TypeError:函数只接受1个参数(2个给定)