Версия sqlite3 не меняется при установке Python - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть приложение Django, которое работает нормально.Тогда я получаю ошибки на некоторых обновлениях.Все они имеют вид:

no such table: main.event_contestant__old

Моя среда - Python 3.7.2, Django 2.1.5 на MacOs 10.12.6

После нескольких дней поиска это кажетсябыть ошибкой, вызванной некоторой несовместимостью между Django и sqlite3 V2.6 (v3.26).

Я пробовал Django версий 2.0.7, 2.1.5 и 2.1.7, но ошибки сохраняются, что бы ни былосделано в Django 2.1.5, которое должно было исправить ошибку, неэффективно.

Дальнейшее чтение показывает, что ошибка пришла с sqlite 2.6.0 и что более старые версии python использовали более старую версию sqlite3.Поэтому я изменил свою версию Python на 3.5, но версия sqlite не изменилась.

Мой вопрос - почему версия sqlite не меняется, когда я использую другую версию python?

ОБНОВЛЕНИЕ:

Установите python 3.5.4 с python.org

Создайте виртуальную среду для python 3.5.4 и запустите эту команду

Python 3.5.4 (v3.5.4:3f56838976, Aug  7 2017, 12:56:33) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> sqlite3.version
'2.6.0'
>>> sqlite3.sqlite_version
'3.8.11'
>>> 

Сделайте то же самое для python 3.6.5:

Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 05:52:31) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> sqlite3.version
'2.6.0'
>>> sqlite3.sqlite_version
'3.22.0'
>>>  

Еще раз с Python 3.7.2, чтобы получить

Python 3.7.2 (v3.7.2:9a3ffc0492, Dec 24 2018, 02:44:43) 
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> sqlite3.version
'2.6.0'
>>> sqlite3.sqlite_version
'3.22.0'
>>>

OK.Похоже, я должен вернуться к Python 3.5.4, чтобы получить другую версию sqlite3, но фактическая версия действительно меняется с различными установками Python.

Теперь мне нужно протестировать эти версии еще раз мою ошибку в Django.

Я ответил на мой вопрос ниже, чтобы указать это обновление.Возможно, я вернусь с вопросами о Джанго.

1 Ответ

0 голосов
/ 22 февраля 2019

Короткий ответ: Python действительно устанавливает разные версии sqlite.Моя проблема заключалась в том, что я путал номера версий старого стиля (например, sqlite.version => 2.6.0) с более новыми версиями (например, sqlite.sqlite_version => 3.8.11).

Я обновил вопросчтобы показать, как получить номера версий и различия между тремя последними выпусками Python 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...