====== Создание БД ======
import sqlite3
con = sqlite3.connect('dosier.db')
cur = con.cursor()
====== Создание таблицы ======
q = 'CREATE TABLE users(id integer PRIMARY KEY, name text)'
cur.execute(q)
con.commit()
====== Вставка данных ======
q = 'INSERT INTO users(id, name) VALUES(?, ?)'
user = (1, 'Вася')
cur.execute(q, user)
con.commit()
====== Выборка данных ======
q = 'SELECT id, name FROM users'
cur.execute(q)
rows = cur.fetchall()
for row in rows:
print(row)
q = 'SELECT id, name FROM users WHERE id > 10'
cur.execute(q)
rows = cur.fetchall()
for row in rows:
print(row)
Пусть у нас есть три таблички: users (id, user), cities (id, city), users2cities (user_id, city_id).
Содержимое таблицы users
^ id ^ user ^
| 1 | Вася |
| 2 | Дима |
| 3 | Марина |
Содержимое таблицы cities
^ id ^ city ^
| 1 | Москва |
| 2 | Новосибирск |
| 3 | Казань |
| 4 | Владивосток |
Содержимое таблицы users2cities
^ id ^ city ^
| 1 | 1 |
| 2 | 1 |
| 3 | 2 |
Предположим, мы хотим найти всех москвичей. Для этого, нам нужно сначала cконструировать запрос, дающий номер, который соответствует Москве:
SELECT id from cities WHERE city='Москва'
Теперь надо нам выяснить у каких пользователей Москва прописана как город:
SELECT users2city.user_id FROM users2city WHERE users2city.city_id in (SELECT id from cities WHERE city='Москва')
И, наконец, найдем имена этих пользователей:
SELECT user FROM users WHERE id in (SELECT users2city.user_id FROM users2city WHERE users2city.city_id in (SELECT id from cities WHERE city='Москва'))
q = 'SELECT user FROM users WHERE id in (SELECT users2city.user_id FROM users2city WHERE users2city.city_id in (SELECT id from cities WHERE city='Москва'))'
cur.execute(q)
rows = cur.fetchall()
for row in rows:
print(row)