Как исправить ошибку sqlite3 в django?
/samba/share/Projects/test_site$ python3.8 manage.py runserver
Watching for file changes with StatReloader
Performing system checks.
System check identified no issues (0 silenced).
Exception in thread django-main-thread:
Traceback (most recent call last):
File «/home/*****/.local/lib/python3.8/site-packages/django/db/backends/base/base.py», line 219, in ensure_connection
self.connect()
File «/home/*****/.local/lib/python3.8/site-packages/django/utils/asyncio.py», line 26, in inner
return func(*args, **kwargs)
File «/home/*****/.local/lib/python3.8/site-packages/django/db/backends/base/base.py», line 200, in connect
self.connection = self.get_new_connection(conn_params)
File «/home/*****/.local/lib/python3.8/site-packages/django/utils/asyncio.py», line 26, in inner
return func(*args, **kwargs)
File «/home/*****/.local/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py», line 215, in get_new_connection
create_deterministic_function(‘django_date_extract’, 2, _sqlite_datetime_extract)
sqlite3.NotSupportedError: deterministic=True requires SQLite 3.8.3 or higher
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File «/usr/local/lib/python3.8/threading.py», line 932, in _bootstrap_inner
self.run()
File «/usr/local/lib/python3.8/threading.py», line 870, in run
self._target(*self._args, **self._kwargs)
File «/home/*****/.local/lib/python3.8/site-packages/django/utils/autoreload.py», line 53, in wrapper
fn(*args, **kwargs)
File «/home/*****/.local/lib/python3.8/site-packages/django/core/management/commands/runserver.py», line 121, in inner_run
self.check_migrations()
File «/home/*****/.local/lib/python3.8/site-packages/django/core/management/base.py», line 459, in check_migrations
executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
File «/home/*****/.local/lib/python3.8/site-packages/django/db/migrations/executor.py», line 18, in __init__
self.loader = MigrationLoader(self.connection)
File «/home/*****/.local/lib/python3.8/site-packages/django/db/migrations/loader.py», line 53, in __init__
self.build_graph()
File «/home/*****/.local/lib/python3.8/site-packages/django/db/migrations/loader.py», line 216, in build_graph
self.applied_migrations = recorder.applied_migrations()
File «/home/*****/.local/lib/python3.8/site-packages/django/db/migrations/recorder.py», line 77, in applied_migrations
if self.has_table():
File «/home/*****/.local/lib/python3.8/site-packages/django/db/migrations/recorder.py», line 55, in has_table
with self.connection.cursor() as cursor:
File «/home/*****/.local/lib/python3.8/site-packages/django/utils/asyncio.py», line 26, in inner
return func(*args, **kwargs)
File «/home/*****/.local/lib/python3.8/site-packages/django/db/backends/base/base.py», line 259, in cursor
return self._cursor()
File «/home/*****/.local/lib/python3.8/site-packages/django/db/backends/base/base.py», line 235, in _cursor
self.ensure_connection()
File «/home/*****/.local/lib/python3.8/site-packages/django/utils/asyncio.py», line 26, in inner
return func(*args, **kwargs)
File «/home/*****/.local/lib/python3.8/site-packages/django/db/backends/base/base.py», line 219, in ensure_connection
self.connect()
File «/home/*****/.local/lib/python3.8/site-packages/django/db/utils.py», line 90, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File «/home/*****/.local/lib/python3.8/site-packages/django/db/backends/base/base.py», line 219, in ensure_connection
self.connect()
File «/home/*****/.local/lib/python3.8/site-packages/django/utils/asyncio.py», line 26, in inner
return func(*args, **kwargs)
File «/home/*****/.local/lib/python3.8/site-packages/django/db/backends/base/base.py», line 200, in connect
self.connection = self.get_new_connection(conn_params)
File «/home/*****/.local/lib/python3.8/site-packages/django/utils/asyncio.py», line 26, in inner
return func(*args, **kwargs)
File «/home/*****/.local/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py», line 215, in get_new_connection
create_deterministic_function(‘django_date_extract’, 2, _sqlite_datetime_extract)
django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3 or higher
/samba/share/Projects/test_site$ sqlite3 —version
3.34.0 2020-12-01 16:14:00 a26b6597e3ae272231b96f9982c3bcc17ddec2f2b6eb4df06a224b91089fed5b
/samba/share/Projects/test_site$ python3.8
Python 3.8.6 (default, Dec 12 2020, 08:29:04)
[GCC 5.4.0 20160609] on linux
Type «help», «copyright», «credits» or «license» for more information.
>>> import sqlite3
>>> sqlite3.sqlite_version
‘3.11.0’
Источник
Подключаем Sqlite3 к Telegram боту
Вступление
Для многих новичков в разработке на Python возникает проблема — как подключить базу данных? Я сам столкнулся с такой проблемой в начале разработки. Тема оказалось довольно простой, но в интернете есть множество гайдов, которые могут запутать. В этом туториале я расскажу о том, как просто интегрировать базу данных Sqlite3 на примере Telegram бота.
Начало работы
Для работы нам понадобятся базовые знания в Python, достаточные для написания простого бота. Данный гайд можно использовать не только для интеграции с ботом, но и для других проектов. Если вы не используете PyCharm, и у вас нет средства для работы с БД, то необходимо установить утилиту SQLiteStudio с официального сайта.
Теперь давайте перейдем к написанию кода. В терминале необходимо установить pyTelegramBotAPI (если по какой-то причине у вас его нет).
Далее создаем новый файл с расширением .py. В нем прописываем следующее:
Устанавливать sqlite3 не нужно — это стандартная библиотека. Вместо «token» необходимо указать токен бота, который выдал вам BotFather. Теперь проверим, работает ли бот.
Запустим код. Если при запуске бота он пишет нам «Добро пожаловать», то все работает отлично.
Как мы видим, все работает.
Настройка базы данных
Открываем SQLiteStudio. Во вкладке Database выбираем пункт Add a database. Для удобства можно использовать сочетание Ctrl+O.
Далее нажимаем на зеленую кнопку Создать новый фал базы данных. Выбираем директорию вашего проекта. В ней можете создать отдельную папку db, где будет хранится файл с базой. Вводим название, например database. Расширение будет присвоено автоматически. Нажимаем Сохранить. Теперь слева в списке у нас появился наш файл. Кликаем по нему ПКМ и выбираем пункт Connect to the database. Соединение с базой установлено. Появилось два подпункта: Таблицы и Представления. В этом уроке мы будем затрагивать только пункт Таблицы. Нажимаем по нему ПКМ и выбираем Add a table.
В поле для ввода указываем имя для таблицы. Я назову ее test. Чуть выше есть активная кнопка Добавить столбец (Ins). В появившемся окне указываем название столбца и тип данных. Для начала вам могут понадобится такие условия, как Первичный ключ, Не NULL и Уникальность. Первый столбец я назову id, выберу тип данных INTEGER и установлю все три условия. У Первичный ключ выберу настройку Автоинкремент. Этот столбец будет автоматически создавать ID записи в таблице. Работать с ним в коде мы не будем.
Второй столбец будет хранить user_id. Он будет иметь тип данных INT, уникален и не равен нулю. Третий столбец я назову user_name, присвою тип данных STRING и выберу пункт Не NULL. Еще 2 столбца будут называться user_surname и username. После того, как вы создали столбцы, нажимаем зеленую кнопку с галочкой.
В общем все будет выглядеть вот так.
Работа с базой данных в коде
Теперь давайте вновь перейдем к коду. Создадим 2 переменные.
В первой мы подключаем нашу базу данных, а во второй создаем курсор для работы с таблицами. Обратите внимание на то, что у меня в директории проекта создана папка db, а уже в ней находится файл БД. Если у вас по другому, укажите расположение в первой переменной.
Теперь создадим функцию, которая будет нужна непосредственно для работы с таблицей.
Итак, сейчас объясню, что тут происходит. В аргументах функции мы указываем переменную user_id с типом данных inst. Далее добавляем запись в таблицу test в столбец user_id. С остальными значениями точно так же. В конце мы просто применяем изменения. Эта функция не будет выполнятся, пока мы ее не вызовем. Давайте исправим это. Создадим обработчик сообщений от пользователя и будем вносить в базу его данные.
В переменные мы вносим имя пользователя, id, имя и фамилию в Telegram, а потом сохраняем в БД. В конце кода можем сделать так, чтобы бот работал постоянно.
Пришло время проверить, как работает код. Запускаем бота и пишем ему «Привет».
Теперь можем зайти в SQLiteStudio, и выбрав вкладку Данные посмотреть что получилось:
Как мы видим, данные уже в базе. Если их по какой-то причине нет, то обновите базу, нажав на синюю кнопку Обновить
Заключение
В этой статье мы немного познакомились с sqlite3 и сделали простой скрипт добавления сведений о пользователе. Этого, конечно, не достаточно. В скором времени выпущу продолжение, в котором затрону тему удаления пользователей и редактирования полей.
Огромное спасибо за то, что прочитали. Надеюсь, кому-то помог. Всем удачи и поменьше багов в коде!
Источник
Pip install sqlite3 не работает
По идеи, sqlite должен устанавливаться автоматически. Под Python2 он есть, а под Python 3 его нет. Проверял help(‘modules’). Попытка pip install pysqlite ничего не дает. pip пишет, что pysqlite не поддерживается Python3 и в 3-м питоне надо использовать sqlite3 из стандартной библиотеки.
imposrt sqilte во втором питоне нормально проходит, в третьем этот модуль не находит. А он нужен именно в 3-м.
Кто-нибудь сталкивался с таким, как решить ее? Система Gento, emerge dev-lang/python не помогает.
Оглавление |
|
Сообщения по теме | [Сортировка по времени | RSS] |
1. «SQLITE3 под Python 3» | + / – | |
Сообщение от fantom (??) on 05-Июн-18, 10:13 | ||
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору |
2. «SQLITE3 под Python 3» | + / – | |
Сообщение от Дмитрий | ||
Нет. Помогло простое копирование /usr/lib/python3.5/sqlite3, /usr/lib/python3.5/lib-dynload/_sqlite3.cpython-35m-x86_64-linux-gnu.so к себе на сервак. | ||
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору |
3. «SQLITE3 под Python 3» | + / – | |
Сообщение от eRIC (ok) on 05-Июн-18, 13:29 | ||
нужно указывать import sqlite3 а не sqlite в Python 3 версии Источник Python sqlite3Всем добрый вечер. Собственно такая вот проблема. Есть VPS CENTOS 6, на нем стандартом стоит python 2.6.6. Для моего проекта на django это не подходит(некоторые баттарейки даже не работают) пересобрал пакеті python, в итге теперь python 2.7.9. Но проблема заключается в том что при запуске выдает ошибку django.core.exceptions.ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named _sqlite3 Все варианты что есть в интернете заключается в переустановке pip install sqlite3 , но не тут то было ибо установить не получается выдает что нельзя установить из PyPi Помощь в написании контрольных, курсовых и дипломных работ здесь. Ошибка в коде с использованием sqlite3 библиотеки Удаление и изменение строк в sqlite (применяя sqlite3) Python telebot и sqlite3 (Recursive use of cursors not allowed) Источник |