当前位置: 首页 > news >正文

2312d,d的sql构建器

原文
项目
该项目在我工作项目中广泛使用,它允许自动处理联接方式动态构建SQL语句.

还会自动直接按表示数据库行结构序化.它在dconf2022在线演讲中介绍了:建模一切.

刚刚添加了对sqlite的支持.该API还不稳定,但仍非常有用.这是按需构建,所以虽然有个计划外表,但满足了我的需要.
示例(使用sqlite):

import d2sqlite3;
import std.stdio;
import std.file : exists;
import std.array;
//是的,我知道,在此我需要一个包装
import sqlbuilder.uda;
import sqlbuilder.dataset;
import sqlbuilder.dialect.sqlite;
import sqlbuilder.types;
import d2sqlite3;
struct Author
{@primaryKey @autoIncrement int id;string firstname;string lastname;static @refersTo!Book @mapping("author_id") Relation books;
}
struct Book
{@primaryKey @autoIncrement int id;string title;string description;@mustReferTo!Author("author") int author_id;
}
void main()
{auto shouldInitialize = !exists("books.sqlite");auto db = Database("books.sqlite");if(shouldInitialize){//创建表db.execute(createTableSql!Author);db.execute(createTableSql!Book);//添加一些书籍和作者Author walter = Author( firstname: "Walter", lastname: "Bright");db.create(walter); //按`SQL`插入语句自动序化Author andrei = Author( firstname: "Andrei", lastname: "Alexandrescu");db.create(andrei);db.create(Book(title: "D语言",description: "The OG D manual",author_id: andrei.id));db.create(Book(title: "C++ 设计",description: "The OG C++ template manual",author_id: andrei.id));db.create(Book(title: "D规范",description: "D语言规范",author_id: walter.id));}//按姓名取作者DataSet!Author ads;auto andrei = db.fetchOne(select(ads).where(ads.firstname, " = 'Andrei'"));//根据书籍的数据集来选择DataSet!Book bds;foreach(booktitle, author; db.fetch(select(bds.title, bds.author))){writefln("Found book %s, written by %s %s", booktitle, author.firstname, author.lastname);}auto andreiBooks = db.fetch(select(bds).where(bds.author_id, " = ", andrei.id.param)).array;writeln("Andrei's books: ", andreiBooks);
}

使用mysql的代码也类似,只需导入mysql-nativesqlbuilder.dialect.mysql即可.
接着是postgresql,不确定我何时需要构建它.
-史蒂夫

相关文章:

2312d,d的sql构建器

原文 项目 该项目在我工作项目中广泛使用,它允许自动处理联接方式动态构建SQL语句. 还会自动直接按表示数据库行结构序化.它在dconf2022在线演讲中介绍了:建模一切. 刚刚添加了对sqlite的支持.该API还不稳定,但仍非常有用.这是按需构建,所以虽然有个计划外表,但满足了我的需要…...

以太网二层交换机实验

实验目的: (1)理解二层交换机的原理及工作方式; (2)利用交换机组建小型交换式局域网。 实验器材: Cisco packet 实验内容: 本实验可用一台主机去ping另一台主机,并…...

启封涂料行业ERP需求分析和方案分享

涂料制造业是一个庞大而繁荣的行业 它广泛用于建筑、汽车、电子、基础设施和消费品。涂料行业生产不同的涂料,如装饰涂料、工业涂料、汽车涂料和防护涂料。除此之外,对涂料出口的需求不断增长,这增加了增长和扩张的机会。近年来,…...

华为ensp网络设计期末测试题-复盘

网络拓扑图 地址分配表 vlan端口分配表 需求 The device is running!<Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]un in en Info: Information center is disabled. [Huawei]sys S1 [S1]vlan 99 [S1-vlan99]vlan 100 [S1-vlan100]des IT [S1-…...

Dockerfile: WORKDIR vs VOLUME

WORKDIR WORKDIR指令为Dockerfile中的任何RUN、CMD、ENTRYPOINT、COPY和ADD指令设置工作目录。 如果WORKDIR不存在&#xff0c;它将被创建&#xff0c;即使它没有在任何后续Dockerfile指令中使用。 语法 : WORKDIR dirpath WORKDIR指令可以在Dockerfile中多次使用。如果提供了…...

spring ioc源码-refresh();

主要作用是刷新应用上下文 Override public void refresh() throws BeansException, IllegalStateException {synchronized (this.startupShutdownMonitor) {// 启动刷新的性能跟踪步骤StartupStep contextRefresh this.applicationStartup.start("spring.context.refre…...

使用递归实现深拷贝

文章目录 为什么要使用递归什么深拷贝具体实现基础实现处理 函数处理 Symbol处理 Set处理 Map处理 循环引用 结语-源码 为什么要使用递归什么深拷贝 我们知道在 JavaScript 中可以通过使用JSON序列化来完成深拷贝&#xff0c;但是这种方法存在一些缺陷&#xff0c;比如对于函数…...

工程(十七)——自己数据集跑R2live

博主创建了一个科研互助群Q&#xff1a;772356582&#xff0c;欢迎大家加入讨论。 r2live是比较早的算法&#xff0c;编译过程有很多问题&#xff0c;通过以下两个博客可以解决 编译R2LIVE问题&解决方法-CSDN博客 r2live process has died 问题解决了_required process …...

【python高级用法】迭代器、生成器、装饰器、闭包

迭代器 可迭代对象&#xff1a;可以使用for循环来遍历的&#xff0c;可以使用isinstance()来测试。 迭代器&#xff1a;同时实现了__iter__()方法和__next__()方法&#xff0c;可以使用isinstance()方法来测试是否是迭代器对象 from collections.abc import Iterable, Iterat…...

Nx市工业数据洞察:Flask、MySQL、Echarts的可视化之旅

Nx市工业数据洞察&#xff1a;Flask、MySQL、Echarts的可视化之旅 背景数据集来源技术选型功能介绍创新点总结 背景 随着工业化的不断发展&#xff0c;Nx市工业数据的收集和分析变得愈发重要。本博客将介绍如何利用Flask、MySQL和Echarts等技术&#xff0c;从统计局获取的数据…...

关于正态分布

目录 1.正态分布是什么2.正态分布有什么用途3.如何确定数据服从正态分布 本文简单介绍正态分布的基本概念和用途。 1.正态分布是什么 正态分布&#xff0c;也称为高斯分布&#xff0c;是由德国数学家卡尔弗里德里希高斯在研究测量误差时提出的。他发现许多自然现象和统计数据…...

每日一练(编程题-C/C++)

目录 CSDN每日一练1. 2023/2/27- 一维数组的最大子数组和(类型&#xff1a;数组 难度&#xff1a;中等)2. 2023/4/7 - 小艺照镜子(类型&#xff1a;字符串 难度&#xff1a;困难)3. 2023/4/14 - 最近的回文数(难度&#xff1a;中等)4. 2023/2/1-蛇形矩阵(难度&#xff1a;困难)…...

Unity UnityWebRequest 在Mac上使用报CommectionError

今天是想把前两天写的Demo拿到Mac上打个IPA的完事我发现 在运行时释放游戏资源的时候UnityWebRequest返回的结果不是Success 查看Log发现是 req.result 是CommectionError error是 Cannot connect to destination host 代码如下&#xff1a; UnityWebRequest req UnityWebRequ…...

WorkPlus为企业打造私有化部署IM解决方案

在移动数字化时代&#xff0c;企业面临着如何全面掌控业务和生态的挑战。企业微信、钉钉、飞书、Teams等应用虽然提供了部分解决方案&#xff0c;但无法满足企业的私有化部署需求。此时&#xff0c;WorkPlus作为安全专属的移动数字化平台&#xff0c;被誉为移动应用的“航空母舰…...

QT上位机开发(抽奖软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 用抽奖软件抽奖&#xff0c;是一种很常见的抽奖方式。特别是写这篇文章的时候&#xff0c;正好处于2023年12月31日&#xff0c;也是一年中最后一天…...

雨课堂作业整理

第一次作业 1.下列序列是图序列的是&#xff08; &#xff09; A.1&#xff0c;2&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;4&#xff0c;5 B.1&#xff0c;1&#xff0c;2&#xff0c;2&#xff0c;4&#xff0c;6&#xff0c;6 C.0&#xff0c;0&#xff0c;2&am…...

C#/WPF 只允许一个实例程序运行并将已运行程序置顶

使用用互斥量(System.Threading.Mutex)&#xff1a; 同步基元&#xff0c;它只向一个线程授予对共享资源的独占访问权。在程序启动时候&#xff0c;请求一个互斥体&#xff0c;如果能获取对指定互斥的访问权&#xff0c;就职运行一个实例。 实例代码&#xff1a; /// <…...

【基础】【Python网络爬虫】【1.认识爬虫】什么是爬虫,爬虫分类,爬虫可以做什么

Python网络爬虫基础 认识爬虫1.什么是爬虫2.爬虫可以做什么3.为什么用 Ptyhon 爬虫4.爬虫的分类通用爬虫聚焦爬虫功能爬虫增量式爬虫分布式爬虫 5.爬虫的矛与盾&#xff08;重点&#xff09;6.盗亦有道的君子协议robots7.爬虫合法性探究 认识爬虫 1.什么是爬虫 网络爬虫&…...

【算法与数据结构】860、LeetCode柠檬水找零

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;本题的思路比较简单&#xff0c;首先要保存收到的零钱&#xff0c;其次计算找零&#xff0c;最后分解找…...

「Verilog学习笔记」乘法与位运算

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 观察乘数的特点&#xff1a; 1111_1011 1_0000_0000 - 1 - 100 timescale 1ns/1nsmodule dajiang13(input [7:0] A,output [15:0] B);//*************code*********…...

GPU资源管理混乱?nvitop一站式解决方案深度解析

GPU资源管理混乱&#xff1f;nvitop一站式解决方案深度解析 【免费下载链接】nvitop An interactive NVIDIA-GPU process viewer and beyond, the one-stop solution for GPU process management. 项目地址: https://gitcode.com/gh_mirrors/nv/nvitop 在深度学习训练、…...

【Python内存管理终极指南】:20年专家亲授智能体内存优化的5大架构设计图与3个致命误区

第一章&#xff1a;Python智能体内存管理的核心原理与演进脉络 Python的内存管理并非由开发者手动控制&#xff0c;而是由解释器内置的“智能体”协同完成——它融合了引用计数、循环垃圾回收&#xff08;GC&#xff09;和内存池机制三重策略&#xff0c;在运行时动态权衡效率与…...

DAMO-YOLO实战:用AI视觉系统做内容安全审核与统计

DAMO-YOLO实战&#xff1a;用AI视觉系统做内容安全审核与统计 1. 引言&#xff1a;当AI视觉遇见内容安全 在数字内容爆炸式增长的今天&#xff0c;如何高效地进行内容审核成为许多平台面临的挑战。传统人工审核不仅效率低下&#xff0c;而且容易因疲劳导致误判。本文将介绍如…...

React-PDF自定义字体粗细终极指南:实现精确文本字重控制的完整教程

React-PDF自定义字体粗细终极指南&#xff1a;实现精确文本字重控制的完整教程 【免费下载链接】react-pdf &#x1f4c4; Create PDF files using React 项目地址: https://gitcode.com/gh_mirrors/re/react-pdf React-PDF是一个功能强大的库&#xff0c;允许开发者使用…...

OBS多平台直播插件:3步搞定全网同步推流,让内容覆盖提升300%

OBS多平台直播插件&#xff1a;3步搞定全网同步推流&#xff0c;让内容覆盖提升300% 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 还在为每次直播只能选择一个平台而烦恼吗&#xff1…...

数据工程合规检查自动化:构建完整解决方案的10个关键步骤

数据工程合规检查自动化&#xff1a;构建完整解决方案的10个关键步骤 【免费下载链接】data-engineer-handbook Data Engineer Handbook 是一个收集数据工程师学习资料的项目。 - 提供数据工程师所需的知识、工具和资源&#xff0c;帮助数据工程师学习和成长。 - 特点&#xff…...

Easy-Scraper:用 Rust 重新定义网页数据采集的效率边界

Easy-Scraper&#xff1a;用 Rust 重新定义网页数据采集的效率边界 【免费下载链接】easy-scraper Easy scraping library 项目地址: https://gitcode.com/gh_mirrors/ea/easy-scraper 当你需要从网页中提取数据时&#xff0c;是否遇到过这些困境&#xff1a;写了 200 行…...

OpenClaw人人养虾:接入Matrix

Matrix 是一个开放的去中心化通讯协议&#xff08;Decentralized Communication Protocol&#xff09;&#xff0c;任何人都可以搭建自己的 Homeserver&#xff08;家服务器&#xff09;并与全球 Matrix 网络互联。OpenClaw 通过 Matrix Client-Server API 实现接入。 前置要求…...

IT运维监控/可观测性

?? 前言&#xff1a;为什么选择 OpenClaw 对接企业微信&#xff1f; 在2026年的企业数字化办公浪潮中&#xff0c;OpenClaw&#xff08;曾用名 Clawdbot、Moltbot&#xff09;已成长为国内领先的开源AI自动化代理工具。凭借其“自然语言驱动、插件化拓展、多平台无缝集成”的…...

【STM32F4系列】【HAL库】【实战解析】MPU6050 DMP姿态解算与I2C通信优化

1. MPU6050与DMP库基础解析 第一次接触MPU6050时&#xff0c;我被它小巧的体积和强大的功能震撼到了。这个售价不到10元的芯片&#xff0c;居然能同时测量三轴角加速度和三轴线加速度。在实际项目中&#xff0c;我发现直接读取原始数据并不难&#xff0c;但要想获得稳定的姿态信…...