Python sqlite where and

WHERE#

Оператор WHERE используется для уточнения запроса. С помощью этого оператора можно указывать определенные условия, по которым отбираются данные. Если условие выполнено, возвращается соответствующее значение из таблицы, если нет — не возвращается.

Сейчас в таблице switch всего две записи:

new_db.db> SELECT * from switch; +----------------+----------+------------+-------------------+ | mac | hostname | model | location | +----------------+----------+------------+-------------------+ | 0010.A1AA.C1CC | sw1 | Cisco 3750 | London, Green Str | | 0020.A2AA.C2CC | sw2 | Cisco 3850 | London, Green Str | +----------------+----------+------------+-------------------+ 2 rows in set Time: 0.033s 

Чтобы в таблице было больше записей, надо создать еще несколько строк. В litecli есть команда source, которая позволяет загружать команды SQL из файла.

Для добавления записей заготовлен файл add_rows_to_testdb.txt:

INSERT into switch values ('0030.A3AA.C1CC', 'sw3', 'Cisco 3750', 'London, Green Str'); INSERT into switch values ('0040.A4AA.C2CC', 'sw4', 'Cisco 3850', 'London, Green Str'); INSERT into switch values ('0050.A5AA.C3CC', 'sw5', 'Cisco 3850', 'London, Green Str'); INSERT into switch values ('0060.A6AA.C4CC', 'sw6', 'C3750', 'London, Green Str'); INSERT into switch values ('0070.A7AA.C5CC', 'sw7', 'Cisco 3650', 'London, Green Str'); 

Для загрузки команд из файла надо выполнить команду:

new_db.db> source add_rows_to_testdb.txt Query OK, 1 row affected Time: 0.023s Query OK, 1 row affected Time: 0.002s Query OK, 1 row affected Time: 0.003s Query OK, 1 row affected Time: 0.002s Query OK, 1 row affected Time: 0.002s 

Теперь таблица switch выглядит так:

new_db.db> SELECT * from switch; +----------------+----------+------------+-------------------+ | mac | hostname | model | location | +----------------+----------+------------+-------------------+ | 0010.A1AA.C1CC | sw1 | Cisco 3750 | London, Green Str | | 0020.A2AA.C2CC | sw2 | Cisco 3850 | London, Green Str | | 0030.A3AA.C1CC | sw3 | Cisco 3750 | London, Green Str | | 0040.A4AA.C2CC | sw4 | Cisco 3850 | London, Green Str | | 0050.A5AA.C3CC | sw5 | Cisco 3850 | London, Green Str | | 0060.A6AA.C4CC | sw6 | C3750 | London, Green Str | | 0070.A7AA.C5CC | sw7 | Cisco 3650 | London, Green Str | +----------------+----------+------------+-------------------+ 7 rows in set Time: 0.040s 

С помощью оператора WHERE можно показать только те коммутаторы, модель которых 3850:

new_db.db> SELECT * from switch WHERE model = 'Cisco 3850'; +----------------+----------+------------+-------------------+ | mac | hostname | model | location | +----------------+----------+------------+-------------------+ | 0020.A2AA.C2CC | sw2 | Cisco 3850 | London, Green Str | | 0040.A4AA.C2CC | sw4 | Cisco 3850 | London, Green Str | | 0050.A5AA.C3CC | sw5 | Cisco 3850 | London, Green Str | +----------------+----------+------------+-------------------+ 3 rows in set Time: 0.033s 

Оператор WHERE позволяет указывать не только конкретное значение поля. Если добавить к нему оператор LIKE, можно указывать шаблон поля.

Читайте также:  Input autocomplete off css

LIKE с помощью символов _ и % указывает, на что должно быть похоже значение:

Например, если поле model записано в разном формате, с помощью предыдущего запроса не получится вывести нужные коммутаторы.

Например, у коммутатора sw6 поле model записано в таком формате: C3750, а у коммутаторов sw1 и sw3 в таком: Cisco 3750.

В таком варианте запрос с оператором WHERE не покажет sw6:

new_db.db> SELECT * from switch WHERE model = 'Cisco 3750'; +----------------+----------+------------+-------------------+ | mac | hostname | model | location | +----------------+----------+------------+-------------------+ | 0010.A1AA.C1CC | sw1 | Cisco 3750 | London, Green Str | | 0030.A3AA.C1CC | sw3 | Cisco 3750 | London, Green Str | +----------------+----------+------------+-------------------+ 2 rows in set Time: 0.037s 

Если вместе с оператором WHERE использовать оператор LIKE :

new_db.db> SELECT * from switch WHERE model LIKE '%3750'; +----------------+----------+------------+-------------------+ | mac | hostname | model | location | +----------------+----------+------------+-------------------+ | 0010.A1AA.C1CC | sw1 | Cisco 3750 | London, Green Str | | 0030.A3AA.C1CC | sw3 | Cisco 3750 | London, Green Str | | 0060.A6AA.C4CC | sw6 | C3750 | London, Green Str | +----------------+----------+------------+-------------------+ 3 rows in set Time: 0.040s 

Источник

Оцените статью