使用sqlite-loadable-rs开发一个简单sqlite uuid 扩展

使用sqlite-loadable-rs开发一个简单sqlite uuid 扩展

默认sqlite 缺少uuid 函数, sqlite-loadable-rs 是一个基于rust包装的框架,可以用来快速开发sqlite 扩展,以下是一个简单测试

项目准备

  • cargo.toml

注意当前edition = "2021" ,2024 因为一些macro的问题,编译会有问题,对于uuid 的生成使用了uuid crate

[package]
name = "uuid"
version = "0.1.0"
edition = "2021"[dependencies]
sqlite-loadable = "0.0.5"
uuid = {version="1.17.0","features"=["v4"]}
[lib]
crate-type=["lib", "staticlib", "cdylib"]

开发uuid 函数

核心就是提供方法并通过sqlite-loadable-rs 提供的macro 进行暴露

  • lib.rs
use sqlite_loadable::prelude::*;
use uuid::Uuid;use sqlite_loadable::{api, define_scalar_function, Result};fn uuid(context: *mut sqlite3_context, _values: &[*mut sqlite3_value]) -> Result<()> {api::result_text(context, &Uuid::new_v4().to_string())?;Ok(())
}#[sqlite_entrypoint]
fn sqlite3_uuid_init(db: *mut sqlite3) -> Result<()> {let flags = FunctionFlags::UTF8;define_scalar_function(db, "uuid", 0, uuid, flags)?;Ok(())
}

代码使用

通过python 使用

  • app.py
import sqlite3
import numpy as np
import sqlite_vec
from sqlite_vec import serialize_float32
db = sqlite3.connect("examplev2.db")
db.enable_load_extension(True)
sqlite_vec.load(db)
db.load_extension("./libsqlite_uuid.dylib")
db.enable_load_extension(False)
vector = np.random.rand(2).astype(np.float32)
vector = [1,8]
db.execute('''
CREATE virtual TABLE IF NOT EXISTS vec_documents using vec0 (id INTEGER PRIMARY KEY,embedding FLOAT[2],name text,version text)
''')
# 插入数据
db.execute("INSERT INTO vec_documents (embedding,name,version) VALUES (?,?,uuid())",(serialize_float32(vector),"example_name")
)
result = db.execute('''select * from vec_documents where embedding=?;
''', (serialize_float32(vector),))print(result.fetchall())
db.commit()
db.close()
  • 效果

说明

通过sqlite-loadable-rs 对于sqlite 进行扩展是一个挺不错的选择,但是当前对于rust 新版本的支持不是很好

参考资料

https://github.com/asg017/sqlite-base64/blob/main/src/lib.rs

https://github.com/asg017/sqlite-loadable-rs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/932289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言数据结构笔记3:Union联合体+结构体取8位Bool量 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

多机器人协同首现基础模型技术突破

某机构研发出首个多机器人协同基础模型DeepFleet,通过Transformer架构处理机器人导航数据,能预测交通模式并提升10%运营效率。该技术利用数十亿小时真实数据训练,包含四种不同架构模型的对比实验。多机器人协同首现…

文登做网站的公司wordpress建英文博客

HTML placeholder 属性实例 1带有 placeholder 文本的两个输入字段&#xff1a;尝试一下 placeholder 文本也可以指定颜色。实例 2带有 placeholder 文本设置颜色&#xff1a;尝试一下 浏览器支持Internet Explorer 10、Firefox、Opera、Chrome 和 Safari 支持 placeholder 属性…

做查询系统网站如何写网站文案

OpenSSL&#xff08;Open Secure Sockets Layer&#xff09;是一个开源的软件库&#xff0c;提供了SSL和TLS协议的实现&#xff0c;用于加密通信。它广泛用于安全连接&#xff0c;例如在网站上通过HTTPS协议进行安全的数据传输. 但是从openssl申请道德证书是不安全的。对于网站…

PHP 图像处理实战 GD/Imagick 从入门到精通,构建高性能图像服务

PHP 图像处理实战 GD/Imagick 从入门到精通,构建高性能图像服务 网页上经常能看到模糊的用户头像、被拉伸变形的卡片图片,还有动辄几 MB 大小的 JPEG 文件。其实这些问题完全可以避免,关键在于建立合适的图像处理流…

上海百度整站优化服务wordpress获取指定图片大小

1. 作用 匹配文档中的某些元素为其应用样式。根据不同需求把不同的标签选出来。 2. 分类 分类 基础选择器 包含 标签选择器、ID选择器、类选择器、通用选择器等 复合选择器 包含 后代选择器、子代选择器、伪类选择器等 1 标签选择器 介绍 又称为元素选择器&#xff0c;根…

湘潭营销网站建设物理机安装虚拟机做网站好处

说明 vue路由切换时&#xff0c;当前页面左侧和右侧容器分别从两侧滑出&#xff0c;新页面左右分别从两侧滑入 效果展示 路由切换-滑入滑出效果 难点和踩坑 现路由和新路由始终存在一个页面根容器&#xff0c;通过<transition>组件&#xff0c;效果只能对页面根容器有效…

完全免费的网站源码做app网站的软件

咳咳&#xff0c;请各位小伙伴们注意啦&#xff01;我们要聊的主题可是相当高大上——小动物呼吸机&#xff01; 我们得先了解一下什么是小动物呼吸机。这可不是一般的机器哦&#xff0c;它是一种实验设备&#xff0c;主要用于各种各样的科学研究实验中。比如&#xff0c;在基…

注销主体和注销网站互联网广告精准营销

因项目原因&#xff0c;公司需要在钉钉里面开发小程序。之前用uniapp开发过app&#xff0c;H5&#xff0c;小程序。还真没尝试过钉钉小程序&#xff0c;今天就简单的记录下uniapp运行钉钉小程序中的过程。 在项目目录新建package.json文件&#xff0c;在文件中添加如下代码&am…

农业服务网站建设方案互联网制作公司

时态篇开篇导言&#xff1a;英语的时态是一种动词形式&#xff0c;不同的时态表示动作行为的不同时间与发生方式。粤语同样也有时态&#xff0c;这种时态是通过动词与对应的前后缀以及时间词共同表示。 &#xff08;一&#xff09;普通时态说明&#xff1a;普通时态一般指经常发…

网站开发外包 验收国内设计的企业网站

简介&#xff1a; 由汽车之家实时计算平台负责人邸星星在 4 月 17 日上海站 Meetup 分享的&#xff0c;基于 Flink Iceberg 的湖仓一体架构实践。 内容简要&#xff1a; 一、数据仓库架构升级的背景 二、基于 Iceberg 的湖仓一体架构实践 三、总结与收益 四、后续规划 一、数据…

江苏省城乡建设局网站兰州网站设计制作

QT学习笔记&#xff08;一&#xff09;&#xff1a;VS2013 QT 5.8 运行、编译问题解决 jom: E:\C\4.QT\HelloWord\Makefile.Debug [debug\moc_predefs.h] Error 1 ‘cl’ 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。 jom: E:\C\4.QT\HelloWord\Makefile…

淘宝api 做网站关注公众号平台

在介绍开发板之前&#xff0c;让我们先来区分一下核心板和开发板的区别。核心板是一种集成度高、功能完整的计算模块&#xff0c;搭载系统&#xff0c;简化了外围接口&#xff0c;体积尺寸相对较小&#xff0c;主要适用于嵌入式系统。而开发板由核心板底板组成&#xff0c;提供…

17网站一起做网店质量怎么样秦皇岛网站制作电话

二维教组A[12][18]采用列优先的存储方法&#xff0c;若每个元素各占3个存储单元&#xff0c;且第1个元素的地址为150&#xff0c;则元素A[9][7]的地址为 ( ) A&#xff0e;429 B&#xff0e;432 C&#xff0e;435 D&#xff0e;438 [分析] 本题考查数组元素存储地址的计算。…

手机端网站界面如何做唐山做网站

本节课程将学习以下内容&#xff1a;函数的复写(override)使用super调用父类的成员函数函数的复写(override)复写(override)&#xff0c;也被称为覆盖或者重写。在你对父类的成员方法不满意的时候&#xff0c;你可以在子类中复写这个方法&#xff0c;来写出符合自己要求的方法。…

凡科可以做视频网站吗wordpress完美重置

一.服务器端获取Session对象依赖于客户端携带的Cookie中的JSESSIONID数据。如果用户把浏览器的隐私级别调到最高&#xff0c;这时浏览器是不会接受Cookie、这样导致永远在服务器端都拿不到的JSESSIONID信息。这样就导致服务器端的Session使用不了。Java针对Cookie禁用&#xff…

2025氧化镁厂家、活性氧化镁厂家、肥料级氧化镁厂家最新推荐榜:实力生产与优质供应之选

在当今工业发展的大背景下,氧化镁作为重要的工业原料,在冶金、建材、环保、医药等众多领域发挥着不可替代的作用。随着各行业对氧化镁品质要求的不断提升,如何选择可靠的氧化镁生产厂家成为众多采购企业面临的重要课…

建设网站目的微信里的小程序在哪

存储基础 存储设备 DAS&#xff1a;IDE、SATA、SCSI、SAS、USBNAS&#xff1a;NFS、CIFSSAN&#xff1a;SCSI、FC SAN、iSCSI 存储内容包括元数据和数据&#xff0c;名称节点&#xff08;NameNode&#xff09;存放元数据&#xff0c;数据节点&#xff08;DataNode&#xff09…

vue 企业网站模板广告平面设计软件

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 1.Python如何递归删除空文件夹&#xff0c;这个问题很常见。 但大多数人的解决办法都是自己实现递归函数解决这个问题&#xff0c;其实根本不用那么麻烦。 Python中的os.walk提供了一种从内到外的遍历目录树的方法&#xff…

网站建设课程设计论文做网站常用的软件

点击上方蓝字关注我们不迷路&#xff01;字符串与编码一、了解计算机编码1.1 编码定义&#xff1a;将信息从一种形式转换为另外一种形式的过程叫做编码&#xff0c;即信息转换过程举例&#xff1a;信息加密解密、语言翻译1.2 计算机编码定义&#xff1a;将计算机可读信息转换…