Страницы

Поиск по вопросам

суббота, 21 марта 2020 г.

Как передать именованный аргумент sqlite?

#python #python_3x #sqlite #sqlite3


Не могу разобраться, как мне передать именованный аргумент (переменную) в базу данных.

Создал базу данных следующим образом:

import sqlite3

conn = sqlite3.connect("mydatabase.db")
cursor = conn.cursor()

cursor.execute("CREATE TABLE users (id numeric)") #пробовал и текстовое значение


Пытался вставить переменную так:

ids = [] #заполненный список с значениями, которые мне нужно вставить
for i in ids:
   cursor.execute("INSERT INTO users VALUES (?,)", i) #пробовал через форматирование
строки, тоже не вышло


Что я делаю не так?
    


Ответы

Ответ 1



cursor.execute(sql, parameters) в качестве параметров ожидает итерируемый объект (обычно список или кортеж): ids = [1,2,3] for i in ids: cursor.execute("INSERT INTO users VALUES (?)", (i,)) # qmark style # NOTE: ----------------------------> ^^^ ^^^^ используем именованные параметры: for i in ids: cursor.execute("INSERT INTO users VALUES (:id)", {"id": i}) # (named style) ВНИМАНИЕ: (<скаляр>) - не является кортежем! In [55]: i = 1 In [56]: type( i ) Out[56]: int In [57]: type( (i) ) # / NOTE! Out[57]: int # \ (i) - это просто скаляр, а не кортеж In [58]: type( (i,) ) Out[58]: tuple

Комментариев нет:

Отправить комментарий