sqlite3版本不会随着python安装的改变而

时间:2019-02-22 11:54:06

标签: python sqlite

我有一个运行良好的Django应用程序。然后我得到一些更新错误。它们都是以下形式:

no such table: main.event_contestant__old

我的环境是MacOs 10.12.6上的Python 3.7.2,Django 2.1.5

经过几天的搜索,这似乎是由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的版本未更改。

我的问题是-为什么当我使用其他版本的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的问题。

1 个答案:

答案 0 :(得分:0)

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

我已经更新了问题,以显示如何获取版本号以及最近的三个Python 3版本之间的区别。

相关问题