SQLite3 Python
Introduction | |
Простейший пример | |
Более реальный пример |
Introduction
SQLite — компактная встраиваемая СУБД с открытым кодом.
- Не использует парадигму клиент-сервер
- Хранит всю базу данных (включая определения, таблицы, индексы и данные) в единственном стандартном файле на том компьютере, на котором исполняется программа
- Перед началом исполнения транзакции записи весь файл, хранящий базу данных, блокируется
В этой статье вы узнаете о том как работать с SQLite3 в Python 3.
Импорт из .csv файла
Допустим, у вас есть файл
data.csv
значения в котором разделены точкой с запятой.
Нужно импортировать содержимое этого файла в базу данных SQLite3
Вы можете найти в этой статье несколько способов сделать такой импорт.
Простейший пример
Создайте файл
from_csv.py
и копируйте туда код из примеров.
Запустить файл можно командой
python3 from_csv.py
import csv, sqlite3
con = sqlite3.connect('db/my.db')
cur = con.cursor()
cur.execute("CREATE TABLE t (picture, price, number);")
# picture, price, number - это названия столбцов
with open('data.csv','r') as fin:
# csv.DictReader по умолчанию использует первую строку под заголовки столбцов
dr = csv.DictReader(fin, delimiter=";")
to_db = [(i['picture'], i['price'], i['number']) for i in dr]
cur.executemany("INSERT INTO t (picture, price, number) VALUES (?, ?, ?);", to_db)
con.commit()
con.close()
python3 from_csv.py
В директории db должен появиться файл
my.db
В этой базе данных должна быть таблица t повторяющая содержание вашего .csv файла
Более реальный пример
Теперь рассмотрим более близкий к реальности пример.
В таблице должен быть столбец id. Желательно генерировать его автоматически.
Также удобнее читать код, оформленный с помощью
docstring
Рассмотрим файл
partners.csv
со списком сайтов
name;url;area
URN.SU;https://urn.su;IT
HeiHei.ru;https://heihei.ru;Travel
TopBicycle.ru;https://topbicycle.ru;Bicycles
Авиасейлз;https://aviasales.ru;Travel
Booking.com;https://booking.com;Hotels
Hotellook;https://Hotellook.com;Hotels
Велодрайв;https://velodrive.ru;Bicycles
Xiaomi;https://mi-shop.com;Android
Samsung;https://www.samsungstore.ru;Android
Book24;https://Book24.ru;Books
GeekBrains;https://gb.ru;Education
Нетология;https://netology.ru;Education
SkillBox;https://SkillBox.ru;Education
Pluralsight;https://Pluralsight.com;Education
СовКомСтрахование;https://sovcomins.ru;Insurance
Полис 812;https://polis812.ru;Insurance
Vivo;https://ru.vivo.com/;Android
Beget;https://beget.com;Hosting
Reg.ru;https://Reg.ru.ru;Hosting
OLDI;https://oldi.ru;Laptops
В файле по три значения на строку: name, url, area. Добавим эти столбцы в базу данных.
В названиях присутствуют кириллические символы, поэтому при открытии укажем кодировку encoding="utf8"
Также не забываем сгенерировать id
Новый, более близкий к реальной жизни, файл
friends.py
будет выглядеть так:
import csv, sqlite3
con = sqlite3.connect('db/partners.db')
cur = con.cursor()
cur.execute("""CREATE TABLE friends (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
url TEXT
,
area TEXT
)""")
with open('partners.csv','r', encoding="utf8") as f:
dr = csv.DictReader(f, delimiter=";")
to_db = [(i['name'], i['url'], i['area']) for i in dr]
cur.executemany("INSERT INTO friends (name, url, area) VALUES (?, ?, ?);", to_db)
con.commit()
con.close()
python3 friends.py