sqlite3使用sqlite2建立的資料庫

2021-09-19 09:37:10 字數 1560 閱讀 5331

sqlite 2.8.17建立了乙個資料庫heroes.db

其中建立了乙個表heroes,這張表中儲存的是魔獸爭霸中英雄的技能資料。

select * from heroes;會得到:

大魔法師|人族|水元素|暴風雪|輝煌光環|時空傳送

山丘之王|人族|風暴之錘|雷霆一擊|重擊|天神下凡

血魔法師|人族|炎擊|放逐|吸魔|火鳳凰

聖騎士|人族|聖光|聖盾|神聖光環|復活

但是用python通過sqlite3操作heroes.db的時候會報錯。

error: file is encrypted or is not a database
我想也許是sqlite3和sqlite2建立的資料庫格式不同造成的。

果然,直接用sqlite3的命令列工具操作heroes.db,也報同樣的錯誤。

接下來的工作,就是把sqlite2建立的heroes.db轉換成sqlite3可以使用的格式:

sqlite heroes.db開啟資料庫檔案,然後在sqlite shell中執行:

.output heroes.sql

.dump heroes

.exit

現在heroes.sql的內容如下:

begin transaction;

create table heroes (name varchar, race varchar, skill1 varchar, skill2 varchar, skill3 varchar, superskill varchar);

insert into heroes values('大魔法師','人族','水元素','暴風雪','輝煌光環','時空傳送');

insert into heroes values('山丘之王','人族','風暴之錘','雷霆一擊','重擊','天神下凡');

insert into heroes values('血魔法師','人族','炎擊','放逐','吸魔','火鳳凰');

insert into heroes values('聖騎士','人族','聖光','聖盾','神聖光環','復活');

commit;

可以把原來的heroes.db刪除了:rm heroes.db

用sqlite3建立新的資料庫檔案並匯入資料:

sqlite3 heroes.db < heroes.sql
現在再用sqlite3 開啟heroes.db看看,已經可以進行查詢和增改刪操作了。

當然python也能通過import sqlite3使用該資料庫了。

注意,再用sqlite時,直接使用sqlite3比較好,因為python好像只直接支援sqlite3。

使用sqlite3 模組操作sqlite3資料庫

python內建了sqlite3模組,可以操作流行的嵌入式資料庫sqlite3。如果看了我前面的使用 pymysql 操作mysql資料庫這篇文章就更簡單了。因為它們都遵循pep 249,所以操作方法幾乎相同。廢話就不多說了,直接看 吧。都差不多,首先匯入模組,然後建立連線,然後獲取游標物件,之後利...

SQLite3 使用教學

os x自從10.4後把sqlite這套相當出名的資料庫軟體,放進了作業系統工具集裡。os x包裝的是第三版的sqlite,又稱sqlite3。這套軟體有幾個特色 支援大多數的sql指令 下面會簡單介紹 乙個檔案就是乙個資料庫。不需要安裝資料庫伺服器軟體。完整的unicode支援 因此沒有跨語系的問...

sqlite3使用簡介

一 使用流程 使用的過程根據使用的函式大致分為如下幾個過程 這幾個過程是概念上的說法,而不完全是程式執行的過程,如sqlite3 column 表示的是對查詢獲得一行裡面的資料的列的各個操作統稱,實際上在sqlite中並不存在這個函式。1 sqlite3 open 開啟資料庫 在運算元據庫之前,首先...