04 July 2020

Привет, SQLite!

Я люблю реляционные базы данных. Поэтому вопрос о том, что они мне будут нужны в Убунте и при программировании на Питоне стоял изначально.
И вот я сдвинулся с мертвой точки - поставил SQLite и попробовал с ней поработать в Блокноте Юпитера с Питоном и Пандой.
Был выбран SQLite именно из-за простоты - там база представляет из себя отдельный файл и все просто, не надо никаких хитрых настроек для аутентифиакации или авторизации, заведение пользователей и прочие DBA задачи, которые возникнут если использовать MySQL или PostgreSQL - бери и пользуйся. Для хранения данных при чисто личном доступе для анализа - больше и не надо.

По факту оказалось что и так все нужно было установлено - я поставил только DB Browser for SQLite, причем ставится он прямо из установки ПО для Убунты


Далее я создал простенькую базу с одной таблицей из двух колонок и добавил туда две записи



Далее я сохранил файл, создал папку в Блокноте Юпитера и скопировал файл базы туда, чтобы пользоваться чисто именем файла без пути.

 

Замечание: при сохранении файла в DB Browser for SQLite если чисто указать имя, то файл сохранится без расширения db и потом, когда его требуется открыть, он не виден по-умолчанию в папке и надо менять фильтр с SQLite database files на all files.

Теперь заглянем сюда, где показано как работать с базой в Юпитере Interacting With Your SQLite DB in a Jupyter Notebook и по образцу сделаем код:

# импорты
import pandas as pd
import sqlite3

# соединяемся с базой
conn = sqlite3.connect("test1")

# создаем курсор
cur = conn.cursor()


Проверяем что данные на месте:


# выполняем запрос
cur.execute("select * from test;")

# вытаскиваем все данные и печатаем
results = cur.fetchall()
print(results)



Итак, c данными у нас порядок.
Теперь можно это оправить в Панду:

df = pd.read_sql_query("select * from test", conn)
df




И в заключении закрываем курсор и соединение:

cur.close()
conn.close()


Собственно и все - код простой и все работает как надо.

No comments:

Post a Comment