Возвращает записи для 100 конкретных фамилий

#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