如何使用SQLITE3将元组/列表插入数据库?

时间:2019-05-07 10:45:51

标签: database sqlite flask tuples

我从想要输入数据库的表单中收集了几条数据。但是,这些数据之一是根据用户按下了多少个复选框创建的列表。当我尝试将此插入列表时,出现错误“ sqlite3.InterfaceError:错误绑定参数4-可能是不受支持的类型。”。我的代码在“ cur.execute(sql,清单)”处停止工作。

我试图更改数据块的类型,但是我需要元组保持原样。我尝试使用cur.executemany,但是没有用。

title = request.form['item_name']

platform = request.form.getlist('platform_list[]')

con = create_connection(DATABASE_NAME)

listing = (title, platform)

sql = """INSERT INTO items(id, title, platform) VALUES (NULL,?,?);"""

cur = con.cursor()

cur.execute(sql, listing)

con.commit()

con.close()

1 个答案:

答案 0 :(得分:1)

Sqlite没有“列表” datatype。这里有两个选项可以解决问题:

  • str = ",".join(platform)一样,将列表转换为字符串
  • json.dumps(platform)一样,将列表转换为JSON字符串

这取决于将数据SELECT退回后如何使用。

如果您希望每个平台的数据库中有一行,则可以使用executemany。您将必须以不同的方式构造listing,以便每个数组元素都包含所有插入参数。例如listing = [(title,x) for x in platform]之类的东西。