Комментарии 9
А почему "чайникам" не объясняется что это за строчка и почему она везде пишется? Что такое "cursor"?
cursor = connection.cursor()
sqlite3 есть не всегда. В некоторых случаях (всего-то ~25 млн. экз. OpenOffice|LibreOffice в РФ) Python на PC есть, но c "вырезанным" модулем sqlite3 и менеджером пакетов pip. И если pip можно вручную доустановить, даже не имея прав администратора, то sqlite3 через pip не установится.
Решение: идем на python.org, качаем embeddable-дистр нужной разрядности и той же версии (3.8, т.е. из этих двух https://www.python.org/downloads/release/python-3810/), заходим в архив (и внутри еще в один архив) и копируем папку sqlite3 и файл sqlite.dll в папку lib (в ней же лежит и папка site-packages) внутри OpenOffice|LibreOffice. Это позволит полноценно работать с БД Sqlite макросами на Basic/Python, c поддержкой контекста офисного документа (ввод/вывод данных на него, использование в качестве "форм" итд). Это аналогично применению ADO в VBA c Excel - быстро, современно.
Вместо длинного и уникального для каждой таблицы
# Преобразуем результаты в список словарей
users_list = []
for user in users:
user_dict = {
'id': user[0],
'username': user[1],
'email': user[2],
'age': user[3]
}
users_list.append(user_dict)
можно писать короткое и универсальное
connection.row_factory = sqlite3.Row
Тогда все fetch'и будут возвращать не кортежи, а словаре-кортежи — можно обращаться к полям и по индексу, и по имени.
Почему-то пропущено несколько весьма важных моментов.
Первое - про создание БД. Надо бы явно написать, что при отсутствии указанного файла БД - создаётся новая, пустая БД. И дать настоятельную рекомендацию указывать полный путь к файлу существующей БД. Бывали вопросы типа "подключаюсь к файлу БД, но ни таблиц, ни данных нету...", а товарищ просто путь не указал. Да, неплохо бы указать, где именно создаётся файл БД, если путь вообще не указан.
Далее - обязательно надо подробно рассказать о дебаге. Как обнаружить, что запрос выполнен с ошибкой? как получить текст ошибки? как определить, в чём проблема, хотя бы первично? Очень важные моменты, но про них ни полслова.
Обработка NULL-значений - вообще-то ожидалось, что будет рассказано, как работать в питоне с возвращённым NULL. Вы ж не по SQL мануал пишете...
Получение результатов запроса в виде списка кортежей - а где пример того, как работать с коллекцией наборов? с результатом работы хранимой процедуры, в которой несколько SELECT... как получить результат каждого из них?
Использование подготовленных (prepared) запросов для повышения производительности - не, а где собственно демонстрация нескольких обращений с разными параметрами? а ведь декларируете...
В общем, пока сыровато. И вообще мануал не по SQLite и не по SQL. Всего понемножку. То есть содержание очень приблизительно соответствует теме. Думаю, следует доработать, должна получиться полезная статья.
Например, давайте выберем пользователей с неизвестным возрастом
Не понял, а где "IS NULL" и т.п.?
Для 'with ...' не хватает информации нужно ли сохранять изменения данных. Пример только с SELECT'ом
Работа с SQLite в Python (для чайников)