簡體   English   中英

使用Python讀取sqlite文件:sqlite3.DatabaseError:文件已加密或不是數據庫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM