Вернуть записи для 100 конкретных фамилий - PullRequest
0 голосов
/ 27 марта 2019

У меня есть кортеж, 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 Ответ

2 голосов
/ 27 марта 2019

Вопрос : вернуть все записи для фамилий, содержащихся в 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...