SQLite3版本未随着Python安装而更改



我有一个运行良好的Django应用程序。然后,我会在一些更新中遇到错误。它们都是形式:

no such table: main.event_contestant__old

我的环境是Python 3.7.2,Django 2.1.5在MacOS 10.12.6

几天后搜索后,这似乎是由Django和SQLite 3 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的版本没有更改。

我的问题是 - 当我使用其他版本的python时,为什么sqlite版本不会更改?

更新:

从python.org安装python 3.5.4

为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'
>>>

好的。看来我已经有多哥回到python 3.5.4来获得不同版本的sqlite3,但实际的版本确实在使用不同的python安装。

现在,我需要在Django中再次测试这些版本。

我在下面回答了我的问题,以指示此更新。可能,我会回来有关Django的问题。

简短的答案是,python确实确实安装了不同版本的sqlite。我的问题是,我将旧样式的版本编号(例如sqlite.version => 2.6.0)与较新版本(例如sqlite.sqlite.sqlite_version => 3.8.11)混淆。

>

我已经更新了一个问题,以显示如何获取版本号和最近的三个python 3版本之间的差异。

最新更新