sqlite相关
前言
本文记录一些sqlite相关笔记,随时更新。
正文
- 时间函数
- datetime()
-- 当前时间 2022-03-24 17:32:43
select datetime('now'); --2022-03-24 09:32:57
select datetime('now', 'unixepoch'); --1970-01-29 11:14:22
select datetime('now', 'utc'); --2022-03-24 01:34:34
select datetime('now', 'localtime'); --2022-03-24 17:35:05
select datetime('now', 'localtime', '-1 day'); --2022-03-23 17:35:05
- strftime()
-- 格式化字符串到指定格式
select strftime("%Y-%m-%d","2023-02-08 14:33:03"); --2023-02-08
-- 获取毫秒时间戳
select strftime('%s', '2023-02-13','utc')||substr(strftime('%f', '2023-02-13','utc'), 4); --1676217600000(2023-02-13 00:00:00)
select strftime('%s', '2023-02-13','localtime')||substr(strftime('%f', '2023-02-13','localtime'), 4); --1676275200000(2023-02-13 16:00:00)
select strftime('%s', '2023-02-13')||substr(strftime('%f', '2023-02-13'), 4); -- 1676246400000(2023-02-13 08:00:00)
- date()
--与datetime几乎相同,不过输出仅仅精确到天
select date("now","localtime"); --2023-02-08
select date("now","localtime","-1 days"); --2023-02-07
select date("now","unixepoch"); -- 1970-01-29
- random()
-- 在一定规则下得到了数据集,将数据集随机排序,然后选择第一条数据
-- 这样的好处是满足某种条件下打乱查询结果的排列顺序;缺点是适合小范围数据集,频繁使用ORDER BY RANDOM()可能会导致性能问题,因为数据库需要为每一行生成一个随机数,然后基于这些随机数进行排序,这在大型数据集中会非常消耗资源。
SELECT * FROM table_name WHERE id > target_id ORDER BY RANDOM() LIMIT 1;
字符串截取
函数:substr(string string,num start,num length)
用法:
string为字符串;
start为起始位置;字符串的第一个字符的位置为1,不是从0开始计算
length为长度。
参考:sqlite 截取字符串函数substr获取字符串长度
length()
参考:SQLite 常用函数字符串拼接
"aaa"||"bbb"支持regexp正则表达式
参考:python sqlite3 支持REGEXP语句 正则表达式 regular expression
import sqlite3
import re
def regexp(expr, item):
reg = re.compile(expr)
return reg.search(item) is not None
conn = sqlite3.connect(':memory:')
conn.create_function("REGEXP", 2, regexp)
cursor = conn.cursor()
cursor.execute('CREATE TABLE foo (bar TEXT)')
cursor.executemany('INSERT INTO foo (bar) VALUES (?)',[('aaa"test"',),('blah',)])
cursor.execute('SELECT bar FROM foo WHERE bar REGEXP ?',['"test"'])
data=cursor.fetchall()
print(data)
# 如果是在类中定义
def regexp(self, expr, item):
'''
正则表达式函数
@params expr: 需要搜索的正则表达式
@params item: sqlite 传入的需要搜索的内容
'''
if type(item).__name__ == "bytes":
item = item.decode()
reg = re.compile(expr)
return reg.search(item) is not None
self.conn.create_function("regexp", 2, self.regexp)
- 查询结果返回字典类型
# 在类中定义
def dict_factory(self, cursor, row):
d = {}
for index, col in enumerate(cursor.description):
d[col[0]] = row[index]
return d
self.conn = sqlite3.connect(self.dbname)
self.conn.row_factory = self.dict_factory
- 获取uuid
select substr(u, 1, 8)||'-'||substr(u, 8, 4)||'-'||substr(u,12,4)||'-'||substr(u,16,4)||'-'||substr(u,20,12) as uuid from (select lower(hex(randomblob(16))) as u) t;
- sqlite3 导出数据为 csv,导入csv数据
导入的前提为数据库必须有这个表,没有表结构的还需要研究一下怎么导入
导出device表保存为device.csv
#!/bin/bash
db=tst.db
sqlite3 $db << EOF
.output device.csv
select * from device;
.output stdout
.exit
EOF
导入device.csv到数据库
#!/bin/bash
db=tst.db
file=device.csv
sqlite3 $db << EOF
.import ./$file device
.exit
EOF
只是导出的话,也可以参考博客SQLite中.mode的演示说明设置导出格式
参考:
[1]. Sqlite 命令行导出、导入数据(直接支持CSV)
[2]. sqlite3: 用脚本批量导出sqlite数据库中的表格数据
[3]. SQLite中.mode的演示说明
sqlite相关的更多相关文章
- sqlite相关使用
一.SQLite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能 ...
- SQLite相关异常
SQLite的异常大多都和异常IO操作有关,这类异常通常在debug测试的时候难以发现通常和用户的操作有关系,根据我遇到的包括以下几种: 1.No transaction is active 这种情况 ...
- android-数据库SQLite相关
android平台下的SQLite数据库是一种轻量级数据库,支持标准的SQL语句. 本文将介绍 android数据库的创建 利用sql语句对数据库增删改查 系统api数据库增删改查 数据库的事务 1, ...
- Entity Framework使用Sqlite时的一些配置
前段时间试着用Entity Framework for Sqlite环境,发现了一些坑坑洼洼,记录一下. 同时试了一下配置多种数据库,包括Sqlite.Sql Server.Sql Server Lo ...
- iphone开发中数据持久化之——嵌入式SQLite(三)
前两篇分别讨论了使用属性列表的数据持久化.使用对象归档的数据持久化,本文将讨论第三个实现数据持久化的方法---嵌入式SQL数据库SQLite3.SQLite3在存储和检索大量数据方面非常有效.它还能够 ...
- Swift - 操作SQLite数据库(引用SQLite3库)
SQLite轻量级数据库在移动应用中使用非常普遍,但是目前的库是C编写的,为了方便使用,对SQLite相关的操作用Swift进行了封装.这个封装代码使用了一个开源项目SQLiteDB,地址是:http ...
- SQLite 数据库
内容来源:高成珍.钟元生<Android编程经典案例解析> SQLite 数据库是Android 中内嵌的轻量级关系型数据库,本质上只是一个文件.SQLite 内部只支持NULL,INTE ...
- 一步一步教你用c# entity framework6 连接 sqlite 实现增删改查
使用entity framework6 连接 SQLite 数据库 前言 很多小型应用程序中,都要使用数据库,而现在比较流行的本地数据库非SQLite莫属. 第一步:前期准备 开发环境:vs2015 ...
- Xamarin SQLite教程数据库访问与生成
Xamarin SQLite教程数据库访问与生成 在本教程中,我们将讲解如何开发SQLite相关的App.在编写程序前,首先需要做一些准备工作,如了解Xamarin数据库访问方式,添加引用,构建使用库 ...
- Android对Sqlite数据库的增删改查
SqLite 数据库 Google 为我们提供了sqlite相关的api SqLiteOpenHelper 这是一个抽象的类 如果想要使用的话,需要其他的类去继承他 SqLiteDatabase 类 ...
随机推荐
- 复现禅道V17.4的sql注入漏洞
漏洞详情 简述:禅道是第一款国产的开源项目管理软件,它的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理.计划管理.发布管理.文档管理.事务管理等功 ...
- 珠排序算法C# 简单实现 奇葩排序中的算盘排序(算珠排序)算法
Console.WriteLine("Hello World!"); int[] arr = { 1, 3, 4, 0, 22, 4,0, 6, 3,10,8,6,7 }; Con ...
- Vue cli之安装
1.安装node.js Node.js是一个新的后端(后台)语言,它的语法和JavaScript类似,所以可以说它是属于前端的后端语言,后端语言和前端语言的区别: 运行环境:后端语言一般运行在服务器端 ...
- QuickApp 快应用中 或 nodejs 中 API接品调用时 GBK转UTF8
请求接口地址:https://doc.quickapp.cn/features/system/fetch.html?h=fetch 第一步,安装包: npm install iconv-lite as ...
- LLM 大模型学习必知必会系列(十):基于AgentFabric实现交互式智能体应用,Agent实战
LLM 大模型学习必知必会系列(十):基于AgentFabric实现交互式智能体应用,Agent实战 0.前言 **Modelscope **是一个交互式智能体应用基于ModelScope-Agent ...
- 搭建内网yum仓库
服务器配置: 1. 创建yum仓库的目录,rpm包上传到这里. mkdir /soft/x86 -p 2. 修改yum缓存配置: sed -i 's#keepcache=0#keepcache=1#g ...
- 如何查看Linux的系统信息?
在Linux服务器上,可以通过几个简单的命令来查看操作系统的详细信息. 1.使用uname命令获取操作系统基本信息,包括内核名称.网络节点名称.内核版本.架构等. uname -a 2.查看`/etc ...
- C#.Net筑基-深入解密小数内部存储的秘密
为什么0.1 + 0.2 不等于 0.3?为什么16777216f 等于 16777217f?为什么金钱计算都推荐用decimal?本文主要学习了解一下数字背后不为人知的存储秘密. 01.数值类型 C ...
- k8s——集群环境问题合集
创建集群 k8s集群创建 集群环境问题合集 重置master节点 kubeadm reset -f # -f 强制重置 可选 重置node节点 # 当你的master节点重置后,node节点需要重新加 ...
- React脚手架 创建React项目
React团队主要推荐使用create-react-app来创建React新的单页应用项目的最佳方式. React脚手架(create-react-app)意义 脚手架是官方提供,零配置,无需手动配置 ...