2011-06-15 51 views
3

我想在Python 3.1.3中使用sqlite3,我需要將enable_load_extension設置爲true。要做到這一點,我相信我需要sqlite版本3.x.從閱讀文章看來,它看起來像一個合適的版本的sqlite應該與Python版本2.6和以上捆綁在一起。然而,當我這樣做:用於Python 3.x的Sqlite版本

import sqlite3 
sqlite3.version_info 

返回結果是:「2.4.1」

我得到執行Python 2.6在不同的機器上相同的答案。

pysqlite站點沒有用於Python 3.x的二進制文件。我的Python副本來自官方Python站點。

所以: 1)我應該使用3.1版本的sqlite嗎? 2)如果我應該有一個更新的版本去哪裏 - 我是否需要設置一個環境變量? 2)如果我需要ü

回答

8

不要混淆SQLite的版本和SQLite API的Python綁定pysqlite的版本。您使用的versionversion_info屬性是指後者。

有沒有想過爲什麼這個模塊被命名爲sqlite3?它只支持3.x版本!

要檢查SQLite的版本,使用sqlite_version代替:

import sqlite3 
print sqlite3.sqlite_version 

在我的Python 2.6的安裝,這個打印3.5.9。對於Python 3.2,我得到了3.7.4

您還可以使用SQL來獲取版本:

>>> import sqlite3 
>>> connection = sqlite3.connect(':memory:') 
>>> cursor = connection.cursor() 
>>> cursor.execute('SELECT sqlite_version()').fetchone() 
('3.7.4',) 
2

您需要sqlite3.sqlite_version_info ...這是3.5.9的Python 2.6和3.1,3.6.21爲Python 2.7和3.7.4 Python 3.2。你有什麼是pysqlite的版本。

你有沒有試過「set enable_load_extension to true」?

您不妨讀一些this long saga ...

+0

感謝您的回覆。我意識到我的錯誤的版本。是的,我試圖設置enable_load_extentsion,我得到一個屬性錯誤。顯然,這個功能在默認情況下被禁用,原因不明。所以我的問題是如何設置enable_load_extensions,它看起來像我將不得不手動編譯pysqlite。你的鏈接中的例子是Unix。你可以通過windows的make/build過程來握住我的手嗎? – Tarquin 2011-06-15 12:41:50

+0

+1爲相關鏈接 – 2011-06-15 15:04:58

+0

僅供參考,由於sqlite3庫不是隨Python源分發的,因此Python x.x帶有sqlite3庫版本y.y.y並不完全正確。這取決於特定版本的Python的構建者或打包者選擇要構建或鏈接的sqlite3庫(或默認來自底層操作系統)。 – 2011-06-15 18:45:07