DuckDB简单使用及Python操作

DuckDB简介

DockUB官网

image

DuckDB是一款开源免费类似Sqlite的嵌入式数据库,支持直接使用内存或单个文件作为数据库。
DuckDB着重于数据处理和分析,是一个款OLAP(联机分析处理)类型的数据库,主要特点如下:

  • 开源免费,MIT协议
  • 功能完善,支持标准SQL、事务、二级索引等
  • 高性能,低消耗(内存 / 文件占用小)
  • 灵活的扩展机制,可以直接冲CSV / JSON / MySQL 等读取数据
  • 支持Python / Java / Go / C / C++ / Nodejs / Rust 等主流编程语言,并提供命令行工具

DockDB安装

DockDB直接下载一个duckdb可执行文件,然后运行即可。

下载/安装链接

启动方式有两种

  1. 使用内存作为数据库,直接运行duckdb可执行文件即可
$ ./duckdb 
v1.1.0 fa5c2fe15f
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
D 

最后显示的D是提示符,表示在DuckDB中,此时输入SQL,回车即可执行

  1. 使用文件作为数据库,文件不存在则自动创建
$ ./duckdb demo.db
v1.1.0 fa5c2fe15f
Enter ".help" for usage hints.
D 

DuckDB命令行简单使用

不同与MySQL这种多数据库服务,duckdb 内存 / 某个文件就是一个单独的数据库,因此不支持create database xxx;这种操作,但是支持show databases;

启动DuckDB并新建数据

$ ./duckdb demo.db    
v1.1.0 fa5c2fe15f
Enter ".help" for usage hints.
D 

显示当前数据库

D show databases;
┌───────────────┐
│ database_name │
│    varchar    │
├───────────────┤
│ demo          │
└───────────────┘
D 

创建表

经试验,不支持AUTO_INCREMENT 字段限制

D create table user (id int primary key,name varchar(50) not null, age int);
D 

查看当前数据库所有表

D show tables;
┌─────────┐
│  name   │
│ varchar │
├─────────┤
│ user    │
└─────────┘
D 

插入数据

D insert into user values(1,'Kevin',18);
D insert into user values(2,'Lily',19);
D 

查询数据

D select * from user where id=1;
┌───────┬─────────┬───────┐
│  id   │  name   │  age  │
│ int32 │ varchar │ int32 │
├───────┼─────────┼───────┤
│     1 │ Kevin   │    18 │
└───────┴─────────┴───────┘
D 

Python操作DuckDB

安装Python三方包duckdb

pip install duckdb

连接数据库(文件)

import duckdb# 连接数据库,文件不存在则自动创建
con = duckdb.connect("demo.db")

执行sql,可以用con.sql('...')con.execute('...')执行sql,两个方法几乎完全相同

不需要建立游标,不需要commit

执行后可以进行链式操作,如:

  • con.sql('...').show(): 以表格方式显示(打印)结果
  • con.sql('...').fetchone(): 获取一条结果,返回tuple类型
  • con.sql('...').fetchall(): 获取所有结果,返回List[tuple]类型

创建表

import duckdbcon = duckdb.connect("demo.db")
con.sql('create table if not exists course (id int primary key,course_name varchar(50) not null); ')
con.sql('show tables').show()

运行后显示如下:

┌─────────┐
│  name   │
│ varchar │
├─────────┤
│ course  │
└─────────┘

插入及查询数据

import duckdbcon = duckdb.connect("demo.db")con.execute("insert into course values(1, '中文');")  # 不可重复执行
con.execute("insert into course values(2, '英语');")  # 不可重复执行r = con.sql("select * from course where course_name='中文';").fetchone()
print(r)

运行后显示如下:

(1, '中文')

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

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

相关文章

CloudFire+PicGo搭建免费图床

目录CloudFire对象存储创建bucket配置域名配置 Bucket 访问 APIPicGO配置 CloudFire对象存储 | CloudFire提供对象存储服务,每个月有10G的免费额度,并且直连稳定可靠,无需CDN加速,足够作为日常图床使用。 创建bucket 打开CloudFire官网并注册账号,点击R2存储。创建图床buc…

Invicti v24.9.0 发布下载,新增功能概览

Invicti v24.9.0 发布下载,新增功能概览Invicti v24.9.0 for Windows - Web 应用程序安全测试 Invicti Standard v24.9.0 – 10 Sep 2024 请访问原文链接:https://sysin.org/blog/invicti/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.orgInvicti 是一种自动化…

Parallels Desktop 20 发布下载,macOS Sequoia 和 Windows 11 24H2 支持准备就绪

Parallels Desktop 20 发布下载,macOS Sequoia 和 Windows 11 24H2 支持准备就绪Parallels Desktop for Mac 20.0.0 (build 55653) - 在 Mac 上运行 Windows macOS Sequoia 和 Windows 11 24H2 支持准备就绪 请访问原文链接:https://sysin.org/blog/parallels-desktop/,查看…

rsync 学习笔记(一)编译

一、背景rsync二进制程序依赖外部库,由于安全问题,有时会单独升级依赖的外部库。另外为了防止因为栈溢出攻击导致服务器被黑,需要对rsync及其依赖的外部库重新编译,开启安全编译选项,增加黑客破解的复杂度。所有的库编译必须要求加上如下编译选项:栈保护(-fstack-protect…

Go runtime 调度器精讲(一):Go 程序初始化

原创文章,欢迎转载,转载请注明出处,谢谢。0. 前言 本系列将介绍 Go runtime 调度器。要学好 Go 语言,runtime 运行时是绕不过去的,它相当于一层“操作系统”对我们的程序做“各种类型”的处理。其中,调度器作为运行时的核心,是必须要了解的内容。本系列会结合 Go plan9 …

煤矿皮带跑偏监测识别系统

煤矿皮带跑偏监测识别系统对皮带状况进行实时监测,不用手动控制。一旦监测到皮带跑偏或者其他异常情况时,应该马上开展警报,通知监督管理办公室,并提醒负责人及时处置,并把警报截屏和视频储存到数据库系统系统中生成表格。煤矿皮带跑偏监测识别系统根据时间段对告警记录和…

GIS建库软件:地理信息与遥感领域的数据基石

在地理信息与遥感科学的浩瀚星海中,建库软件是构筑数据宇宙的基石,它不仅承载着海量地理空间数据,更是连接信息与应用的桥梁。本文将从其定义、关键技术、应用场景及未来发展四个方面,深入剖析建库软件如何支撑并推动整个行业的发展。建库软件:数据海洋的港湾建库软件,顾…

mysql月份前后格式变化记录

select DATE_FORMAT(2024-10-11 - INTERVAL 1 MONTH,%Y-%m) 一, DATE_FORMAT(2024-10-11,%Y-%m) 二, DATE_ADD(2024-10-11, INTERVAL 1 MONTH) 三 ,DATE_FORMAT(DATE_ADD(2024-10-11, INTERVAL 1 MONTH) ,%Y-%m) 四,REPLACE(DATE_FORMAT(DATE_ADD(2024-10-11, INTERVAL 1 MONT…

煤矿皮带撕裂检测系统

煤矿皮带撕裂检测系统可以全天候监管皮带的运送的工作情况,当煤矿皮带撕裂检测系统监管皮带撕裂时,马上停止皮带的运送,精准定位到皮带的裂开部位,工作员能够及时到现场维护保养。及时发现皮带撕裂,能够减少安全事故带来的损失,能够有效提升皮带机生产运输过程的效率。煤…

GIS数据采集软件:地理信息与遥感技术的智慧之眼

在信息时代,数据如同血液,滋养着各行各业的创新与进步,而地理信息与遥感领域中的数据采集软件,正是这股生命之源,它不仅为科学研究、城市规划、环境保护、灾害监测、资源管理等提供了精确数据支持,更是智慧城市建设的基石。本文将深入探讨其技术发展、应用及未来趋势,为…

工地反光衣穿戴识别

工地反光衣穿戴识别系统依据现场监控摄像头采集的视频图像,应用最新的神经网络算法,检测到一些人不穿反光衣服时,前端抓拍设备实时上传视频流至系统服务器,然后实时读取视频流并进行语音报警广播。工地反光衣穿戴识别系统的另一个闪光点是能够应用现有的监控摄像机,实时监…

深入理解DocumentFragment -文档片段

什么是文档片段? (MDN解释:)DocumentFragment,文档片段接口,一个没有父对象的最小文档对象。它被作为一个轻量版的 Document 使用,就像标准的document一样,存储由节点(nodes)组成的文档结构。 作用是什么 与document相比,最大的区别是DocumentFragment 不是真实 DOM…