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)