我有这个简单的代码,我无法工作。
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(所有字符串)。我不知道这是否是正确的方法......
我该怎么做?
由于
答案 0 :(得分:2)
这一行:
c.executescript("INSERT INTO books (title,text,tags) "
"VALUES (col[0],col[1],col[2])")
不是有效的SQL。现在,由于c
被定义为游标,您可以直接从execute
而不是executescript
运行c.execute("INSERT INTO books (title,text,tags) "
"VALUES (?,?,?)", col)
,后者假设从连接创建游标并执行SQL。只需用以下代码替换该行即可:
{{1}}
上面的SQL使用" qmark样式"占位符,从其后面的参数列表中获取实际值。
答案 1 :(得分:2)
一种选择是将您的最后一行更改为:
c.execute("INSERT INTO books (title,text,tags) VALUES (?,?,?)", (col[0], col[1], col[2]))
然后在完成更改后提交并关闭连接:
conn.commit()
conn.close()