Gaipy為NUDB的python版API,提供8個常用function,方便使用者進行資料庫操作,詳請可以參考smaply檔案
- text
- 文字,資料庫內會自動斷詞
- 可使用Search function做全文索引搜尋
- num
- 數字
- time
- 時間
- 依時序排序使用
- date
- 日期
- res
- Type: bool
- 回傳是否執行成功
- msg
- Type: str
- 成功或錯誤資訊
- data
- Type: dict or list of dict
- 資料庫回傳內容
-
Create(db, args, wieghted column)
- 功能: 新建一個新的資料庫
- db:
- Type: str
- 屬性: 必填
- 說明: 要建立的DB名稱
- args:
- Type: dict
- 屬性: 必填
- 說明: {'欄位名稱','資料型態'}
- wieghted column:
- Type: list
- 屬性: 選填
- 說明: args裡面的欄位加權,影響最終搜尋輸出時的排序分數
- Usage:
DB = 'all_col_no_weight' create_arg = { 'title': 'text', 'content': 'text', 'post_time': 'time', 'post_date': 'date', 'likes': 'num' } weighted_col = [ 'title', 'content' ] Create(DB, create_arg, weighted_col)
-
Insert(db, record, record_format, rb)
- 功能: 插入單/多筆資料
- db:
- Type: str
- 屬性: 必填
- 說明: 要建立的DB名稱
- record:
- Type: str, dict or list of dict
- 屬性: 必填
- 說明: 要插入的資料
- record_format:
- Type: str
- 屬性: 選填 (預設 : text)
- 說明: 插入資料的型態,目前提供 text or json format
- rb:
- Type: str
- 屬性: 選填
- 說明: Record Begin,當插入多筆資料時,用來區別每筆資料的特定欄位 or 符號
- Usage:
db = 'all_col_no_weight' record = { 'title': '好麻煩', 'content': '好不想寫Usage喔', 'likes': 1 } Insert(db, record, 'json')
-
Update(db, rid, new_record, modify_all, record_format, getrec)
- 功能: 更動單筆資料特定欄位或全部取代
- db:
- Type: str
- 屬性: 必填
- 說明: 要建立的DB名稱
- rid:
- Type: int
- 屬性: 必填
- 說明: 要更動資料的id
- new_record:
- Type: str, dict
- 屬性: 必填
- 說明: 要變動的欄位或資料
- modify_all:
- Type: bool
- 屬性: 選填 (預設 : False)
- 說明: 是否全部取代該筆資料
- record_format:
- Type: str
- 屬性: 選填 (預設 : text)
- 說明: 插入資料的型態,目前提供 text or json format
- getrec:
- Type: bool
- 屬性: 選填 (預設 : False)
- 說明: 回傳時是否回傳成功的整筆資料 (True) 或是只回傳成功的rid (False)
- Usage:
db = 'all_col_no_weight' new_record = '@title:啊呀不小心打錯' Update(db, 2, new_record, False)
-
Show(db)
- 功能: 查看資料庫的欄位有哪些
- db:
- Type: str
- 屬性: 必填
- 說明: 要查看欄位的DB
- Usage:
Show(db)
-
Drop(db)
- 功能: 刪除資料庫
- db:
- Type: str
- 屬性: 必填
- 說明: 欲刪除DB的名稱
- Usage:
Drop(db)
-
Select(db, pattern, filter_args, mode, page_cnt, page, order_by, order)
- 功能: 針對欄位搜尋,pattern為空時撈取全部資料
- db:
- Type: str
- 屬性: 必填
- 說明: 欲查詢DB的名稱
- pattern:
- Type: dict
- 屬性: 必填
- 說明: {'val': [搜尋pattern],'col': [欄位]},若有多個pattern可依序放入list,請看範例
- filter_args:
- Type: dict
- 屬性: 選填
- 說明: {'val': [條件],'col': [欄位]},若有多個條件可依序放入list
- mode:
- Type: str, 'AndMatch', 'OrMatch', 'BestMatch'
- 屬性: 選填
- 說明: 多個pattern搜尋後要依照哪種邏輯產出,
- page_cnt:
- Type: int
- 屬性: 選填 (預設 : 10)
- 說明: 一頁要取幾筆資料
- page:
- Type: int
- 屬性: 選填 (預設 : 1)
- 說明: 第幾頁
- order_by:
- Type: str
- 屬性: 選填
- 說明: 排序的依據,不傳時預設 rid
- order:
- Type: str
- 屬性: 選填 (預設 : desc)
- 說明: 降序或升序 ('asc' or 'desc')
- Usage:
Select( DB, { 'val': [ '標題-1', '內容-2', '標題-3', '內容-4', ], 'col': [ 'title-1', 'content-2', 'title-3', 'content-4', ] }, filter_args={ 'val: ':['>10'], 'col': ['viewcount'], }, )
- Return:
- Type: json格式,可用dict解析
- 回傳的['data']: {'cnt': 幾筆資料, 'recs': [rec]}
- rec: {欄位: 欄位資料, '_rid'}
-
Search(db, term_list, filter_args, mode, page_cnt, page, order_by, order)
- 功能: 全文搜尋
- db:
- Type: str
- 屬性: 必填
- 說明: 欲查詢DB的名稱
- term_list:
- Type: str
- 屬性: 必填
- 說明: 欲查詢的關鍵字,多個以逗號做區別 ex: 蓋世,搜尋引擎
- filter_args:
- Type: dict
- 屬性: 選填
- 說明: {'val': [條件],'col': [欄位]},若有多個條件可依序放入list
- mode:
- Type: str, 'AndMatch', 'OrMatch', 'BestMatch'
- 屬性: 選填
- 說明: 多個pattern搜尋後要依照哪種邏輯產出,
- page_cnt:
- Type: int
- 屬性: 選填 (預設 : 10)
- 說明: 一頁要取幾筆資料
- page:
- Type: int
- 屬性: 選填 (預設 : 1)
- 說明: 第幾頁
- order_by:
- Type: str
- 屬性: 選填
- 說明: 排序的依據,不傳時預設 rid
- order:
- Type: str
- 屬性: 選填 (預設 : desc)
- 說明: 降序或升序 ('asc' or 'desc')
- Usage:
db = "abc" keyword = "蓋世,搜尋引擎" gaipy.Search( db, keyword, filter_args={ 'val: ':['>10'], 'col':['viewcount'] } )
-
Del(db, rid)
- 功能: 刪除list中的rid資料
- db:
- Type: str
- 屬性: 必填
- 說明: 欲刪除資料DB的名稱
- rid:
- Type: list of int
- 屬性: 必填
- 說明: rid 可透過Select查詢拿到,或是insert時紀錄。
- Usage:
Del(DB, [1, 2, 3])