#python #sqlite
#python #sqlite
Вопрос:
У меня есть кортеж l
из 100 фамилий. Как я могу сделать что-то подобное в sqlite3:
l = ("Smith", "Murphy", "Owens", ...)
with sqlite3.connect("census.sqlite") as conn:
c = conn.cursor()
c.execute('select firstname, surname from census_data where surname in ?',(l,))
чтобы я мог вернуть все записи для фамилий, содержащихся в l
.
Комментарии:
1. это не работает?
Ответ №1:
Вопрос: верните все записи для фамилий, содержащихся в
tuple
Суть в том, чтобы создать запрос с таким количеством привязок — ?
-, как в последовательности.
[:-1]
Необходимо исключить последнюю запятую ...?,
.
-
SQL в понимании SQLite — whereclause
surnames = ("Smith", "Murphy", "Owens") bindings = '?,'*len(surnames) QUERY = "select firstname, surname from census_data where surname in ({});" .format(bindings[:-1]) print(QUERY) # >>> select firstname, surname from census_data where surname in (?,?,?); cur.execute (QUERY, surnames)
Протестировано с Python:3.5.3 — sqlite3: 2.6.0