Как вставить кортеж / список в базу данных с помощью SQLITE3? - PullRequest
0 голосов
/ 07 мая 2019

У меня есть несколько частей данных, собранных из формы, которую я хочу ввести в свою базу данных.Однако одна из этих частей данных - это список, созданный из числа флажков, которые нажал пользователь.Когда я пытаюсь вставить это в список, я получаю сообщение об ошибке «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 Ответ

1 голос
/ 07 мая 2019

Sqlite не имеет «списка» тип данных .Вот два варианта, которые могут решить проблему:

  • Преобразовать список в строку как с str = ",".join(platform)
  • Преобразовать список в строку JSON как с json.dumps(platform)

Это будет зависеть от того, как будут использоваться данные, когда они будут SELECT возвращены.

Если вам нужна одна строка в базе данных на платформу, вы должны использовать executemany.Вам нужно будет создать listing по-другому, чтобы каждый элемент массива содержал все параметры вставки.Например, listing = [(title,x) for x in platform].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...