如何利用Python和VC6.0對SQLite資料庫進行操作
這段時間由於工作上的需要,簡單學習了SQLite資料庫的操作,為了方便地將採集的資料寫入到SQLite資料庫中,我採用Python。但是由於後期需要用C來實現資料處理演算法,因此也需要完成利用VC6.0來對SQLite資料進行操作。為了對這段時間學習進行總結,也為了日後用到相關知識可以直接參考積累的成果,特此將這些工作記錄於這篇部落格。當然,由於牽涉到資料保密問題,以及演算法的不宜公開,這裡只是介紹Python和VC6.0對SQLite的作業碼。
第一步就是安裝SQLite,這裡我選用的資料庫是Navicat for SQLite,介面簡潔而操作簡單,最高的處理資料量可以達到2T。另外注意為了在接下來的VC6.0中匯入靜態連結庫,需要有以下幾個檔案:
(1)sqlite3.dll和sqlite3.def
(2)sqlite3.lib和sqlite3.h
這裡,由sqlite3.def產生,開啟DOS命令列介面,通過cd以及盤符切換指令將目錄轉到SQLite所在處,運行命令:LIB /DEF : sqlite3.def。將會出現如下所示的常見庫產生輸出:
C:\sqlite>lib /DEF : sqlite3.def
Microsoft(R) Library Manager Version 10.00.30319.01
……(詳細請見《SQLite權威指南》(第二版))
sqlite3.h可以直接從網上下載一個,如果需要可以聯絡我。這樣第一步的準備工作就完成了。
第二步是安裝Python和VC6.0,這個我就不再囉嗦了。這裡我用的是Python 2.7。資料檔案為data.txt。
1.Navicat for SQLite操作介面
Navicat for SQLite是一套快速、可靠並價格相宜的資料庫管理工具,專為簡化資料庫的管理及降低系統管理成本而設計的。對資料庫伺服器的新手來說學習起來相當容易,有極完備的圖形化使用者介面 (GUI),可以簡便地以安全方便的方法建立、組織、訪問和共用資訊。
在之後我們得到data.db檔案時,通過建立串連,即可利用SQL語句對資料庫進行查詢等操作了。需要匯入4列資料。(很抱歉我不能上傳完整資料檢視):
2.Python對SQLite資料庫的操作
接下來我們開啟Python 2.7的IDLE(Python 2.7 GUI),開始編寫Python操作SQLite資料庫的代碼,開啟之後如所示:
File→New Window建立新的.py檔案,編寫代碼如下:
#匯入Python SQLite資料庫模組
import sqlite3
#建立/開啟資料庫
cx=sqlite3.connect("E:/data.db")
#使用遊標查詢資料庫
cu=cx.cursor()
#建表
cu.execute("create table me (id integer primary key,ivalues1 string,ivalues2 string,ivalues3 string,ivalues4 string)")
txtRead_0=open("E:/0.txt",'r');
file_0=txtRead_0.readlines();
icount=1
for line in file_0:
ivalues1,ivalues2,ivalues3,ivalues4=line.split('\t')
cx.execute("insert into me values('%d','%s','%s','%s','%s')"%(icount,ivalues1,ivalues2,ivalues3,ivalues4))
cx.commit()
icount+=1
txtRead_0.close
這樣就完成了將data.txt中的資料寫入到資料庫檔案data.db中,通過Navicat for SQLite就可以進行查詢等操作,也可以將感興趣的組匯出。
3.VC6.0對SQLite資料庫的操作
相對於Python對SQLite的操作來說,用VC6.0 來操作資料庫稍微顯得麻煩一點,不過考慮到日後代碼的移植性,即使麻煩一點還是值得的。
通過VC6.0介面中的Project→Settings開啟Project Settings介面,如所示:
在Object/library modules:中添加之前我們得到的sqlite3.lib,這樣就可以構建我們自己的程式了。同時記得將sqlite3.lib和sqlite3.dll拷貝到當前工程目錄中。然後按照我們最熟悉的建立工程,Win32控制台程式,這裡一定要將之前下載的sqlite3.h添加到工程中。接著我們編寫代碼如下:
#include <stdio.h>
#include "sqlite3.h"
int main(void)
{
sqlite3 *db=NULL;
char *MyErrMsg=0;
int icount;
//開啟指定的資料庫檔案,如果不存在將建立一個同名的資料庫檔案
icount=sqlite3_open("data.db",&db);
if (icount)
{
fprintf(stderr,"Cann't open database:%s\n",sqlite3_errmsg(db));
sqlite3_close(db);
}
else
printf("Open data.db successfulliy!\n");
sqlite3_close(db);
return 0;
}
這裡我只是簡單介紹一下利用VC6.0和Python對SQLite的簡單操作,至於插入、更新和刪除等操作,以及根據自己的應用場合進行編程,這裡不再贅述。有興趣的朋友可以聯絡我一起交流,謝謝!