мета-данные страницы
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| zadanie_3 [2024/03/12 09:21] – wikiadmin | zadanie_3 [2024/03/12 09:35] (текущий) – wikiadmin | ||
|---|---|---|---|
| Строка 125: | Строка 125: | ||
| ==Шаг 7. Отображение данных таблицы SELECT== | ==Шаг 7. Отображение данных таблицы SELECT== | ||
| Отобразим данные из таблицы users. Это делается SQL запросом «SELECT». После «SELECT» указывается список столбцов, | Отобразим данные из таблицы users. Это делается SQL запросом «SELECT». После «SELECT» указывается список столбцов, | ||
| + | |||
| + | < | ||
| sqlite> SELECT * FROM users; | sqlite> SELECT * FROM users; | ||
| + | |||
| Ivan|25|mac1 | Ivan|25|mac1 | ||
| Dasha|23|mac2 | Dasha|23|mac2 | ||
| Juliya|21|mac3 | Juliya|21|mac3 | ||
| + | </ | ||
| Включим отображение заголовков столбцов: | Включим отображение заголовков столбцов: | ||
| - | sqlite> .headers on | + | |
| Снова отобразим данные из таблицы users. Теперь с заголовками столбцов «name|age|mac»: | Снова отобразим данные из таблицы users. Теперь с заголовками столбцов «name|age|mac»: | ||
| + | |||
| + | < | ||
| sqlite> SELECT * FROM users; | sqlite> SELECT * FROM users; | ||
| + | |||
| name|age|mac | name|age|mac | ||
| Ivan|25|mac1 | Ivan|25|mac1 | ||
| Dasha|23|mac2 | Dasha|23|mac2 | ||
| Juliya|21|mac3 | Juliya|21|mac3 | ||
| + | </ | ||
| Для того, чтобы выбрать только один столбец в списке полей вместо «*» нужно написать название столбца: | Для того, чтобы выбрать только один столбец в списке полей вместо «*» нужно написать название столбца: | ||
| + | |||
| + | < | ||
| sqlite> SELECT name FROM users; | sqlite> SELECT name FROM users; | ||
| + | |||
| name | name | ||
| Ivan | Ivan | ||
| Dasha | Dasha | ||
| Juliya | Juliya | ||
| + | </ | ||
| Можно указать несколько столбцов через запятую. Столбцы будут отображаться в указанном в запросе порядке: | Можно указать несколько столбцов через запятую. Столбцы будут отображаться в указанном в запросе порядке: | ||
| + | |||
| + | < | ||
| sqlite> SELECT age,name FROM users; | sqlite> SELECT age,name FROM users; | ||
| + | |||
| age|name | age|name | ||
| 25|Ivan | 25|Ivan | ||
| 23|Dasha | 23|Dasha | ||
| 21|Juliya | 21|Juliya | ||
| + | </ | ||
| ==Шаг 8. Условия выборки WHERE== | ==Шаг 8. Условия выборки WHERE== | ||
| Выберем не все данные, | Выберем не все данные, | ||
| + | |||
| + | <code SQLite> | ||
| sqlite> SELECT age,name FROM users WHERE age<24; | sqlite> SELECT age,name FROM users WHERE age<24; | ||
| + | |||
| age|name | age|name | ||
| 23|Dasha | 23|Dasha | ||
| 21|Juliya | 21|Juliya | ||
| + | </ | ||
| Получили только 2 записи, | Получили только 2 записи, | ||
| Можно выполнить поиск по конкретному условию: | Можно выполнить поиск по конкретному условию: | ||
| + | |||
| + | <code SQLite> | ||
| sqlite> SELECT name,age FROM users WHERE name=’Juliya’; | sqlite> SELECT name,age FROM users WHERE name=’Juliya’; | ||
| + | |||
| name|age | name|age | ||
| Juliya|21 | Juliya|21 | ||
| + | </ | ||
| ==Шаг 9. Создание и заполнение второй таблицы== | ==Шаг 9. Создание и заполнение второй таблицы== | ||
| Создадим вторую таблицу. Это будет таблица MAC-адресов активных регистраций устройств WiFi-роутера с уровнями сигналов: | Создадим вторую таблицу. Это будет таблица MAC-адресов активных регистраций устройств WiFi-роутера с уровнями сигналов: | ||
| - | sqlite> CREATE TABLE registrations (mac String, signal String); | + | |
| Посмотрим обновленный список таблиц в нашей базе данных: | Посмотрим обновленный список таблиц в нашей базе данных: | ||
| + | |||
| + | < | ||
| sqlite> .tables | sqlite> .tables | ||
| + | |||
| registrations users | registrations users | ||
| + | </ | ||
| Пока добавим в таблицу registrations данные вручную (в дальнейшем нам нужно будет автоматически записывать данные, | Пока добавим в таблицу registrations данные вручную (в дальнейшем нам нужно будет автоматически записывать данные, | ||
| - | sqlite> INSERT INTO registrations (mac, signal) VALUES (' | + | |
| + | | ||
| Отобразим данные из этой таблицы: | Отобразим данные из этой таблицы: | ||
| + | |||
| + | < | ||
| sqlite> SELECT * FROM registrations; | sqlite> SELECT * FROM registrations; | ||
| + | |||
| mac|signal | mac|signal | ||
| mac3|-72 | mac3|-72 | ||
| mac1|-85 | mac1|-85 | ||
| mac5|-69 | mac5|-69 | ||
| + | </ | ||
| ==Шаг 10. Связь двух таблиц== | ==Шаг 10. Связь двух таблиц== | ||
| Теперь наша задача – связать 2 таблицы: | Теперь наша задача – связать 2 таблицы: | ||
| + | |||
| + | < | ||
| sqlite> SELECT * FROM users, registrations WHERE users.mac = registrations.mac; | sqlite> SELECT * FROM users, registrations WHERE users.mac = registrations.mac; | ||
| + | |||
| name|age|mac|mac|signal | name|age|mac|mac|signal | ||
| Ivan|25|mac1|mac1|-85 | Ivan|25|mac1|mac1|-85 | ||
| Juliya|21|mac3|mac3|-72 | Juliya|21|mac3|mac3|-72 | ||
| + | </ | ||
| Мы получили строки обеих таблиц, | Мы получили строки обеих таблиц, | ||
| Можно выбрать не все столбцы, | Можно выбрать не все столбцы, | ||
| + | < | ||
| sqlite> SELECT users.name, registrations.signal FROM users, registrations WHERE users.mac = registrations.mac; | sqlite> SELECT users.name, registrations.signal FROM users, registrations WHERE users.mac = registrations.mac; | ||
| + | |||
| name|signal | name|signal | ||
| Ivan|-85 | Ivan|-85 | ||
| Juliya|-72 | Juliya|-72 | ||
| + | </ | ||
| Для начала нам этого хватит. Мы вернемся в SQLite когда будем создавать таблицу пользователей WiFi роутера. | Для начала нам этого хватит. Мы вернемся в SQLite когда будем создавать таблицу пользователей WiFi роутера. | ||
| Строка 200: | Строка 240: | ||
| ==Шаг 11. SQL из Python== | ==Шаг 11. SQL из Python== | ||
| - | В Python есть готовые библиотеки почти на все случаи жизни. Есть библиотека для работы с sqlite3. Эта библиотека содержит функции для подключения к базе данных SQLite, для выполнения SQL запросов к базе данных, | + | В Python есть готовые библиотеки почти на все случаи жизни. Есть библиотека для работы с **sqlite3**. Эта библиотека содержит функции для подключения к базе данных SQLite, для выполнения SQL запросов к базе данных, |
| - | Для подключения библиотеки SQLite необходимо в начале скрипта написать «import sqlite3». | + | |
| + | Для подключения библиотеки SQLite необходимо в начале скрипта написать | ||
| Используем функции библиотеки «connect», | Используем функции библиотеки «connect», | ||
| + | <code python> | ||
| import sqlite3 # | import sqlite3 # | ||
| - | con = sqlite3.connect('/ | + | con = sqlite3.connect('/ |
| cur = con.cursor() # | cur = con.cursor() # | ||
| cur.execute(' | cur.execute(' | ||
| Строка 210: | Строка 253: | ||
| print(users) #вывод массива users на экран | print(users) #вывод массива users на экран | ||
| con.close() # | con.close() # | ||
| + | </ | ||
| + | |||
| Результат выполнения скрипта – массив данных (таблица): | Результат выполнения скрипта – массив данных (таблица): | ||
| - | [(' | + | |
| ==Шаг 12. Выборочное чтение данных== | ==Шаг 12. Выборочное чтение данных== | ||
| Для чтения одной строки массива (таблицы) нужно после названия массива «users» написать номер строки в квадратных скобках. Например «users[0]»: | Для чтения одной строки массива (таблицы) нужно после названия массива «users» написать номер строки в квадратных скобках. Например «users[0]»: | ||
| + | |||
| + | <code python> | ||
| import sqlite3 | import sqlite3 | ||
| - | con = sqlite3.connect('/ | + | con = sqlite3.connect('/ |
| cur = con.cursor() | cur = con.cursor() | ||
| cur.execute(' | cur.execute(' | ||
| Строка 222: | Строка 269: | ||
| print(users[0]) | print(users[0]) | ||
| con.close() | con.close() | ||
| + | </ | ||
| + | |||
| Результат выполнения скрипта – первая (нулевая) строка массива: | Результат выполнения скрипта – первая (нулевая) строка массива: | ||
| - | (' | + | |
| - | Попробуйте написать users[2] для отображения третьей строки. | + | |
| + | < | ||
| Для чтения одной ячейки массива (таблицы) нужно написать координаты ячейки таблицы после названия массива «users» в двух квадратных скобках [x][y], где x - номер строки, | Для чтения одной ячейки массива (таблицы) нужно написать координаты ячейки таблицы после названия массива «users» в двух квадратных скобках [x][y], где x - номер строки, | ||
| Dasha | Dasha | ||
| Строка 230: | Строка 281: | ||
| ==Шаг 13. Чтение данных в цикле== | ==Шаг 13. Чтение данных в цикле== | ||
| Построчное чтение данных в цикле: | Построчное чтение данных в цикле: | ||
| + | <code python> | ||
| import sqlite3 | import sqlite3 | ||
| - | con = sqlite3.connect('/ | + | con = sqlite3.connect('/ |
| cur = con.cursor() | cur = con.cursor() | ||
| cur.execute(' | cur.execute(' | ||
| users = cur.fetchall() | users = cur.fetchall() | ||
| for user in users: | for user in users: | ||
| - | print(user) | + | |
| con.close() | con.close() | ||
| + | </ | ||
| + | |||
| Сохраним этот скрипт. Вернемся к нему после того как считаем данные о регистрациях устройств в WiFi сети роутера. | Сохраним этот скрипт. Вернемся к нему после того как считаем данные о регистрациях устройств в WiFi сети роутера. | ||