#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
Комментариев нет:
Отправить комментарий