我从想要输入数据库的表单中收集了几条数据。但是,这些数据之一是根据用户按下了多少个复选框创建的列表。当我尝试将此插入列表时,出现错误“ 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()
答案 0 :(得分:1)
Sqlite没有“列表” datatype。这里有两个选项可以解决问题:
str = ",".join(platform)
一样,将列表转换为字符串json.dumps(platform)
一样,将列表转换为JSON字符串这取决于将数据SELECT
退回后如何使用。
如果您希望每个平台的数据库中有一行,则可以使用executemany
。您将必须以不同的方式构造listing
,以便每个数组元素都包含所有插入参数。例如listing = [(title,x) for x in platform]
之类的东西。