2010-07-26 133 views
9

我正在使用Python 2.6.5构建我的应用程序,该应用程序随sqlite3 3.5.9一起提供。显然,当我在另一个问题中发现,外键支持并没有在sqlite3中引入,直到版本3.6.19。然而,Python 2.7自带了sqlite3 3.6.21,所以这个工作 - 我决定我想在我的应用程序中使用外键,所以我尝试升级到Python 2.7。如何升级Python 2.6中的sqlite3包?

我正在使用扭曲,我无法为我的生活得到它建立。 Twisted依赖于zope.interface,我无法找到python 2.7的zope.interface - 我认为它可能只是“工作”,但我必须将所有文件复制到自己的身上,而不仅仅是使用自我安装软件包。

所以我认为只需重新构建python 2.6并将其与新版本的sqlite3链接起来可能更为明智。但我不知道如何 -

我该怎么做?

我有Visual Studio 2008中安装一个编译器,我读了这是真正支持Windows的只有一个,而我正在运行64位操作系统

+0

你可以在那里抛出一个更多的出血边缘依赖吗? ;) – msw 2010-07-26 08:45:53

+0

@msw我知道升级到_very latest_ python,并期望现有的库支持它是一个有点荒谬。但我认为达不到支持基本功能的rdbms的内置支持到目前为止已被提取,尤其是当您对sql比较陌生,并且希望安全性时,如果垃圾尝试使您的表支持您,它的方式进入你的数据库。 – 2010-07-26 09:24:10

+0

我并不认为这太牵强,也不是认真的,从哪里来的笑话;)我确实认为你是在买入自己的交叉依赖,而事实上你竟然是这样。和平。 – msw 2010-07-26 12:22:47

回答

3

sqlite3不是内置模块;它是一个扩展模块(二进制文件是C:\ Python26 \ DLLs_sqlite3.pyd(在我的机器上))。 pyd是一个具有不同文件扩展名并且只有1个入口点的DLL。还有一个sqlite3.dll,它包含SQLite代码。 python.exe没有与任何一个链接,因此重建python.exe没有意义。

接下来的想法是到pysqlite2下载站点,并获取Python 2.6的最新Windows安装程序。不幸的是,没有关于它包含哪个版本的SQLite的文档。一个需要安装它,然后渣土约:

>>> import sqlite3 as standard 
>>> from pysqlite2 import dbapi2 as latest 
>>> for m in (standard, latest): 
... print m.sqlite_version 
... 
3.5.9 
3.6.2 
>>> 

所以,它仅包含SQLite的版本3.6.2,它没有你想真正的外键的支持。

我建议你检查mailing list,看看你的问题是否在那里得到解答,如果没有问及包含后面SQLite的Python 2.6安装程序(例如Python 2.7包含的安装程序)的可能性。

+0

我明白了,谢谢,我对python内幕不太熟悉。 – 2010-07-26 09:25:03

1

我决定,我只希望给这个当我意识到我曾经安装在python 2.6中的每个库都驻留在我的site-packages文件夹中时出现了一枪。我只是...复制网站包到我的2.7安装,它的工作到目前为止。这对我来说是迄今为止最简单的路线 - 我会进一步研究它,但至少我现在可以继续发展。

我不会接受这个答案,因为它甚至不回答我的问题,但它确实解决了我的问题,据我所知目前为止。

+0

+1这是一个可以接受的答案,因为您已经发现自己处于相同的曲折小小的依赖关系的迷宫中。我已经将select,minor lib/python3.x/foo.py移植到python2.6中当一个特定的项目需要它(并且测试了它,并且除了我的本地安装之外不会考虑对其进行任何修改),但它确实有效,并且与替代方案相比,是一种满足工程要求的工程权衡。 – msw 2010-07-26 08:51:13

+0

这假设你曾经在网站包中安装过的库都不包含任何C或Cython扩展 - 至少在Windows上,这些.PYD文件与特定版本的Python绑定。 – 2010-07-26 09:02:09

+0

@Johhn呃哦 - 我注意到我所有的.pyc文件都失败了,我认为这是“错误的魔术数字”,我认为这是Python版本的错误。我刚删除它们。无论如何,我已经从官方网站的Windows安装程序安装了扭曲的安装,它似乎工作(我希望)(扭曲的软件包有C扩展名)。无论如何,这是我的本地版本。试图让解释器及其在服务器上建立的所有依赖关系......是另一天的问题! – 2010-07-26 09:14:08

6

从sqlite网站下载最新版本的sqlite3.dll,替换python目录中的sqlite3.dll。

+0

+1000(如果我可以)。这只是升级我的python 2.6安装到sqlite 3.7.17(x86)http://www.sqlite.org/download.html – Barton 2013-08-21 19:42:46

+0

工程与Python 2.7以及 – 2016-03-25 19:33:57