[英]Reading sqlite file with Python: sqlite3.DatabaseError: file is encrypted or is not a database
我收到了一個需要使用Python閱讀的sqlite文件。
我可以使用應用程序“ SQLite的數據庫瀏覽器”打開文件。 我可以看到表結構並在該應用程序中執行select語句。 因此該文件似乎還可以。 (我沒有創建它,也不知道它是如何創建的。)
但是,當我嘗試從Python讀取它時,出現錯誤:
sqlite3.DatabaseError:文件已加密或不是數據庫
import sqlite3 as lite
sqlite3.sqlite_version
# '3.6.21'
con = lite.connect('path\file.sqlite')
cur = con.cursor()
cur.execute('SELECT * from mytable')
# sqlite3.DatabaseError: file is encrypted or is not a database
如果我使用文本編輯器打開文件,則第一個單詞為“ SQLite format 3”,后跟不可讀的文本。 所以它是用版本3生成的? 不確定是否需要將其轉換為db文件?
我不確定從這里去哪里。
當SQLite數據庫采用與您的Python安裝中的SQLite版本不兼容的新格式時,可能會出現此消息。
例如,我的庫存Python報告:
>>> import sqlite3
>>> print sqlite3.sqlite_version
3.6.21
根據MSYS2 file
命令,我要打開的file
:
$ file testfile.sqlite
testfile.sqlite: SQLite 3.x database, last written using SQLite version 3008010
版本3008010 => 3.8.10。
在Windows上,您可以通過從SQLite下載頁面下載新的預構建SQLite版本(選擇與您的Python安裝匹配的32位或64位)並將其sqlite3.dll
刪除,來在Python安裝中升級SQLite版本。 \\PythonX\\DLLs
目錄中舊\\PythonX\\DLLs
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.