首页 > 编程语言 >DuckDB简单使用及Python操作

DuckDB简单使用及Python操作

时间:2024-09-11 12:46:10浏览次数:10  
标签:duckdb Python 数据库 简单 course DuckDB sql con

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 duckdb

con = 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 duckdb

con = 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, '中文')

标签:duckdb,Python,数据库,简单,course,DuckDB,sql,con
From: https://www.cnblogs.com/superhin/p/18408042/duckdb_with_python

相关文章

  • 基于Python的黑龙江旅游景点数据分析系统 基于Flask的旅游景点爬虫可视化平台(程序+LW+
    ......
  • CTF - Python 沙箱绕过与任意命令执行技巧
    这些是一些绕过Python沙箱保护并执行任意命令的技巧。命令执行库首先,您需要知道是否可以直接使用已导入的某些库执行代码,或者是否可以导入以下这些库:os.system("ls")os.popen("ls").read()commands.getstatusoutput("ls")commands.getoutput("ls")commands.getsta......
  • pydub 基于python的音频剪辑包
    1下载ffmegwgethttps://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl.zip把bin目录配置到path中,或者cd到ffmeg的bin目录下调用脚本2下载pydubpipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplepydub3使用#导入f......
  • python读取Excel表格内容
    importpandasaspdio=r'C:\Users\lijj1\Downloads\OSS.xlsx'#绝对路径。PS:跟当前脚本在同一目录下用相对路径,否则用绝对路径。data=pd.read_excel(io,sheet_name='工作表1')#指定读取第一个sheetprint(data.head(2))#读取前2行column_data=data.loc[:,'对应域......
  • 基于Python的基层派出所与警务站警情管理系统-附源码14419
    摘 要基层派出所与警务站作为社会治安的坚实守护者,日常承担着繁重的警情处理工作。为了提升警务工作的信息化水平,优化警情管理流程,我们精心打造了这款基层派出所与警务站警情管理系统。该系统基于Django框架开发,旨在通过智能化、自动化的手段,实现警情的快速录入、高效处理......
  • Python数据分析及可视化教程--商城订单为例-适用电商相关进行数据分析---亲测可用!!!!
    前言:Python是进行数据分析和可视化的强大工具,常用的库包括Pandas、NumPy、Matplotlib和Seaborn。以下是一个基本的教程概述,介绍了如何使用这些库来进行数据分析和可视化:Python数据分析及可视化教程1、环境准备2、数据准备3、开始数据分析3.1、导入库3.2、加......
  • Python Numpy布尔数组在数据分析中的应用
    大家好,在数据分析和科学计算中,布尔数组是一个非常重要的工具,它可以帮助我们进行数据的筛选、过滤和条件判断。Python的Numpy库提供了丰富的布尔运算功能,能够高效地对数据进行处理。本文将深入探讨Numpy中的布尔数组,介绍布尔运算和布尔索引的使用方法,并通过具体的示例代码展示其......
  • [Python] Python 基础教程
    1概述1.1简介Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。https://www.python.org/Python由GuidovanRossum于1989年底发明,第一个公开发行版发行于1991年。像Perl语言一样,Python源代码同样遵循GPL(GNUGeneralPublicLicense)......
  • VScode python 调试深度学习项目 debugpy 库
    以前打OI,限于辣鸡NOILinux没有靠谱的IDE。只能用终端gdb来调试C++。gdb基本功能还是有的,但是每次启动,之前的东西(断点,监控变量)都会消失,需要重新输一遍。所以当时发现还是输出调试好,当然前置条件是写的两百行左右的程序编译时间短(1s左右),从头运行一遍也快(一个题规定的运......
  • python中Tkinter常用控件含义
    #python中Tkinter常用控件Button'按钮控件;在程序中显示按钮。'Canvas'画布控件;显示图形元素如线条或文本'Checkbutton'多选框控件;用于在程序中提供多项选择框'Entry'输入控件;用于显示简单的文本内容'Frame......