SQLite3

来自百合仙子's Wiki
(重定向自SQLite
跳转到导航 跳转到搜索

代码片断

随机取 n 行的方法

SELECT key,value FROM dict ORDER BY RANDOM(key) LIMIT 1

命令行下压缩数据库

find ~ -name '*.sqlite' -exec sqlite3 '{}' 'VACUUM;' \;

时间戳到字符串

SELECT datetime(dt, 'unixepoch', 'localtime')

只读打开文件

可用于读取火狐的数据库

sqlite3 'file:file.sqlite?immutable=1'

语法

pragma

显示或设定编码

pragma encoding;
pragma encoding = "UTF-8";

内建命令

显示表的结构

.schema TABLE

设置显示模式。column 模式会对齐数据

.mode MODE

显示/隐藏表格头

.header[s] [ON | OFF]

扩展

使用 load_extension(filename) 函数来载入扩展文件 filename

扩展列表

效率

第一次连接数据库时会比较慢,之后的速度不错。[1]

SQLite3 中存储 blob 会导致效率下降,即使不读取它。[2]

caveats

SQLite3 不支持 select * from xxx where yyy in ? 语法,所以需要把 in 后的参数逐个传入。如果参数项过多,又会超过 SQLite3 的参数个数限制(默认为 999)。[3] Python 在这种情况会抛出 too many SQL variables 错误。

参见

外部链接

参考资料