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

问题描述 投票:0回答:2

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

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(所有字符串)。我不知道这是否是正确的做法...

我怎样才能做到这一点 ?

谢谢

python list sqlite
2个回答
2
投票

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

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

然后,如果您完成了更改,则提交并关闭连接:

conn.commit()
conn.close()

2
投票

这一行:

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

© www.soinside.com 2019 - 2024. All rights reserved.