Как выбирать данные исходя из заданного аргумента?
Есть некий аргумент, и хочу выбирать данные исходя из этого аргумента:
import sqlite3
connection = sqlite3.connect('car_model.db')
cursor = connection.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS cars (
car_id VARCHAR,
model VARCHAR,
price VARCHAR
)""")
model = 'Hundai'
price = 12000
cursor.execute('''
select * from cars where model is(?, ?)
''', (model))
cursor.execute('''
select * from cars where model = %s, (model)''')
connection.commit()
connection.close()
Никак не получается добавить аргумент в комманду вставки.
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
cursor.execute('''
select * from cars where model = %s, (model)''')
Данный вариант не работает по двум причинам
- у вас ошибка в запросе. Должно быть так:
cursor.execute(''' select * from cars where model = %s''', (model, )) - вы передаете в качестве параметров одну переменную
(model)вместо ожидаемого кортежа(model, ).
In [123]: print(type( (model) ))
<class 'str'>
In [124]: print(type( (model,) ))
<class 'tuple'>
Обратите внимание на запятую...
Пример использования параметризированных запросов:
qry = "insert into cars(car_id, model, price) values(?, ?, ?)"
records = [[1, "Hundai", 12000], [2, "BMW", 25000]]
cursor.executemany(qry, records)
connection.commit()
далее выбираем данные в запросе:
qry2 = "select * from cars where model = ?"
cursor.execute(qry2, (model, ))
res = list(cursor.fetchall())
результат:
In [122]: res
Out[122]: [('1', 'Hundai', '12000')]