??Sqlite 數(shù)據(jù)庫插件

v2.0.3
版本
2024-02-17
版本更新時(shí)間
15
安裝
0
star
Youloge.Sqlite重構(gòu)版本 Webman 基礎(chǔ)插件
項(xiàng)目介紹
Sqlite3 插件:它是對標(biāo)fopen 函數(shù)
的,性能還是不錯(cuò)了,像一般性的個(gè)人博客,企業(yè)官網(wǎng),完全都是可以hold住的。
其中Sqlite 的內(nèi)存型
反應(yīng)時(shí)間是ns
級別的,其他數(shù)據(jù)庫都會(huì)有網(wǎng)絡(luò)開銷可以做到ms
級別。代碼很少就100多行
這二天幫代碼升級了下,直接繼承
SQLite3
類進(jìn)行擴(kuò)展官方類php.net/sqlite3,我在官方基礎(chǔ)上擴(kuò)展了幾個(gè)功能,從而實(shí)現(xiàn)自動(dòng)表映射。同時(shí)將表配置文件放入到數(shù)據(jù)庫同目錄下,遷移時(shí)候直接復(fù)制即可。
Sqlite
的優(yōu)缺點(diǎn)客觀看待,他真的非常適合打日志~
項(xiàng)目地址
Github Youloge.sqlite Star我 我們一起做大做強(qiáng)
- 2.1.0 修復(fù)
json_trim存入json字符串報(bào)錯(cuò)
值為用json_encode($html,JSON_HEX_APOS)轉(zhuǎn)義 - 2.0.4 修復(fù)
row_array
的排序查詢BUG
安裝
composer require youloge/sqlite
插件已經(jīng) 引入了以下助手函數(shù)
不需要在引入了
可以直接使用sqlite()
use Youloge\Sqlite\Sqlite; if(!function_exists('sqlite')){ function sqlite($dir,$file){ return new Sqlite($dir,$file); } } // 任意地方 使用 $db = sqlite('文件目錄/目錄','文件名(不包含后綴)'); // 返回是一個(gè)`SQLite3 類` $db::version(); // 返回版本/配置 var_export(get_class_methods($db)); // 打印全部方法
### 配置文件
- Sqlite 沒什么遠(yuǎn)程管理工具 配置文件是關(guān)鍵的關(guān)鍵
- 位置:config/plugin/youloge/app.php
- 將`絕對路徑`配置到掛載盤之類的可以很好的和`其他日志服務(wù)`相結(jié)合
```php
<?php
return [
'enable' => true,
// 絕對路徑 需要 / 開頭 結(jié)尾 不需要
'absolute'=>'C:/Users/Micateam/Desktop/youloge/composer/public',
// 相對路徑 數(shù)據(jù)庫配置`JSON`格式 + MD5后續(xù)加入 方式配置變動(dòng)
'dump'=>'youloge.sqlite.json',
// 文件后綴 你改成mp4都沒問題 Sqlite3 能識(shí)別
'format'=>'db'
];
配置數(shù)據(jù)表
- 進(jìn)入絕對路徑
C:/Users/Micateam/Desktop/youloge/composer/public
目錄下新增文件youloge.sqlite.json
Sqlite 是以為文件作為數(shù)據(jù)庫
,一個(gè)文件就是一個(gè)完整的數(shù)據(jù)庫,你必須做到
預(yù)先把數(shù)據(jù)表設(shè)計(jì)好:- 支持復(fù)雜目錄
www/hello/word.user
點(diǎn)文件夾也支持*.user
別和app.php > format
重復(fù)防止同名文件夾-文件名
- 后續(xù)考慮
sqlite 配置
整合到absolute 絕對路徑里
去加載,可以更好的分布式共享:例如丟到掛載盤共享
/**
* 判斷標(biāo)準(zhǔn) 鍵值為數(shù)組 鍵名代表目錄名
* 判斷標(biāo)準(zhǔn) 鍵值為字符 鍵名代表數(shù)據(jù)庫表名
*/
{
"init":"id INT PRIMARY KEY AUTOINCREMENT,name varhcar(32),avatar varhcar(128),mail varhcar(128)",
"test":"id INT PRIMARY KEY AUTOINCREMENT,name varhcar(32),avatar varhcar(128),mail varhcar(128)",
"www.site":{
"hello":"id INT PRIMARY KEY AUTOINCREMENT,avatar varhcar(128),mail varhcar(128),created text(12)",
"word":"id INT PRIMARY KEY AUTOINCREMENT,name varhcar(32),avatar varhcar(128),mail varhcar(128)",
"ok":{
"no":"id INT PRIMARY KEY AUTOINCREMENT,state varhcar(128)",
}
},
"open.site":{
"info":"id INT PRIMARY KEY AUTOINCREMENT,state varhcar(128),created text(12)"
}
}
youloge.sqlite.json
文件數(shù)據(jù)表配置,要仔細(xì):數(shù)據(jù)庫表一旦建立了,修改更改表會(huì)十分的麻煩+蛋疼
- $db = sqlite('/','db001'); 會(huì)在
絕對路徑
目錄下新建一個(gè)db001.db
文件,自動(dòng)創(chuàng)建二張表init
和test
- $db = sqlite('www.site/ok','db002'); 會(huì)在
絕對路徑/www.site/ok
目錄下新建一個(gè)db002.db
文件,自動(dòng)創(chuàng)建一張表no
開始使用
連接數(shù)據(jù)庫
- 相對路徑 目錄
open.site
文件youloge
表名info
為例$db = sqlite('open.site','youloge'); sqlite::version(); // 靜態(tài)調(diào)用
插入數(shù)據(jù)
$table, $data
插入一條數(shù)據(jù)
$insert = sqlite->insert('info',['state'=>'正常']); echo $insert; // 返回插入的行數(shù) 行數(shù) ≠ 自增ID
插入多條數(shù)據(jù)
$insert = sqlite->insert('info',[['state'=>'正常'],['state'=>'正常'],['state'=>'正常']]); echo $insert; // 返回插入的行數(shù) 行數(shù) ≠ 自增ID
更新數(shù)據(jù)
$table, $data, $where
一般更新
$update = sqlite->update('info',['state'=>'禁言'],['id'=>1]); echo $update; // 返回1,0
特殊更新
$update = sqlite->update('info',['state'=>'禁言'],['id > 5','state'=>'正常']); echo $update; // 返回1,0
刪除數(shù)據(jù)
$table,$where
$delete = sqlite->delete('info',['state'=>'禁言']); // 鍵值對
$delete = sqlite->delete('info',['state IS NULL']); // 純數(shù)組
echo $delete; // 返回1,0
單條查詢 $table, $columns, $where
可選$order=false
- row_array
$row_array = sqlite->row_array('info','*',['id'=>100]); $row_array = sqlite->row_array('info',['*','id as uuid'],['id < 100','state'=>'正常'],'created desc'); echo $row_array; // []
多條查詢
$table, $columns, $where,$limit=10,$offset=0,$order=false
- result_array
$result_array = sqlite->result_array('info','*',['id'=>100],10,0); echo $result_array; // []
統(tǒng)計(jì)查詢
$table, $columns, $where,$limit=10,$offset=0,$order=false
- 好用但是數(shù)據(jù)多了 這玩意肯定卡~
$count_array = sqlite->count_array('info','*',['id'=>100],10,0); echo $count_array; // ['list'=>[],'count'=>0,'limit'=>10,'offset'=>0];
1.0.2 舊版是鏈?zhǔn)秸{(diào)用的:因?yàn)閣ebman是常駐內(nèi)存,類只加載一次,我寫不好連接池所以2.0.0之后廢棄鏈?zhǔn)秸{(diào)用
擴(kuò)展函數(shù) -> 箭頭調(diào)用
官方是:: 靜態(tài)調(diào)用
insert
- 插入數(shù)據(jù)update
- 更新數(shù)據(jù)delete
- 刪除數(shù)據(jù)row_array
- 單條查詢result_array
- 多條查詢count_array
- 統(tǒng)計(jì)查詢
原生連接句柄
$pdo = sqlite('hello/word','profile');
$pdo::exec();
$pdo::query();
$pdo::close();
$pdo::busyTimeout();
關(guān)于交流打賞:VX:
micateam