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

DuckDB简单使用及Python操作

时间:2024-09-14 16:27:35浏览次数:12  
标签:duckdb name Python 数据库 简单 course DuckDB sql con

DuckDB简介

DockDB官网

DuckDB简单使用及Python操作_sql

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,name,Python,数据库,简单,course,DuckDB,sql,con
From: https://blog.51cto.com/hanzhichao/12017667

相关文章

  • 2024年06月中国电子学会青少年软件编程(Python)等级考试试卷(一级)答案 + 解析
    青少年软件编程(Python)等级考试试卷(一级)分数:100 题数:37一、单选题(共25题,共50分)1.在使用turtle绘制图形时,如果要控制小海龟移动到x坐标为200,y坐标为150的位置,以下代码能够实现效果的是?()A.turtle.go(150,200)B.turtle.go(200,150)C.turtle.goto(150,200)D.......
  • 第158天:安全开发-Python-Socket编程&反弹Shell&分离免杀&端口探针&域名爆破
    前置知识使用socket模块1.导入模块首先,你需要导入Python的socket模块。importsocket2.创建套接字使用socket.socket()函数创建一个新的套接字。这个函数可以接收两个参数:地址族和套接字类型。   地址族(AddressFamily):AF_INET用于IPv4,AF_INET6用于IP......
  • 零基础快速上手HarmonyOS ArkTS开发5---从简单的页面开始2---使用List组件构建列表、G
    接着继续往下学习页面布局的知识。最近发现之前学习这一章节的内容在官方已经被下了,替换成了另外一个案例了(https://developer.huawei.com/consumer/cn/training/course/slightMooc/C101717497398588123):而且整个视频的风格也不一样了,先看看之前的这个美女讲师:再看看现在的:哇塞,档次......
  • pdf密码怎么解除?简单易懂的8个pdf解密方法分享,2分钟搞定
    pdf密码怎么解除?在工作生活中,为了保护文件的信息隐私安全,我们会选择给pdf文件添加密码。但如果我们经常编辑这份加密pdf文件的话,每次打开之后都需要重新输入密码,就会变得非常麻烦。因此我们需要对加密pdf进行密码解除操作,要怎么解除pdf密码呢?今天小编就来教大家8个简单好用的PD......
  • Python存储与读写二进制文件
    本文介绍了一种在Python中将Numpy数组转存为一个紧凑的二进制格式的文件,及其使用内存映射的形式进行读取的方案。一个二进制的数据流,不仅可以更加方便页形式的内存映射,相比于传统的Numpy单精度浮点数数组还有一个可哈希的特性。总体来说是一个对于高性能计算十分友好的存......
  • 避免 PyCharm 将该 Python 脚本作为测试运行
    为了避免PyCharm将该Python脚本作为测试运行(即pytest自动捕获),你可以做以下几步来确保该脚本作为普通的Python程序执行,而不是作为pytest运行。解决方案:1.确保文件名不以test_开头:Pytest会自动检测以test_开头的文件,并尝试将其作为测试运行。如果你的文件名是test_m......
  • typer python cli 开发框架
    typer是一个基于pythontypehints的快速强大的cli开发框架,由fastapi框架的作者开发,是一个很不错的工具包含的特性使用简单简单支持开发复杂cli可以执行运行script参考使用安装python-mvenvvenvsourcevenv/bin/activatepipinstalltyper简单使用defmain(name:str):......
  • python数据分析与可视化
    Python是进行数据分析和可视化的强大工具。它提供了丰富的库和框架来帮助数据科学家和分析师处理数据集、执行统计分析以及创建交互式图表。以下是一些常用的库以及它们的基本用法。数据处理库Pandas:Pandas是Python中最流行的数据分析库之一,它提供了数据结构和数......
  • 代数模型(Algebraic Models)---线性规划------+ 案例 + Python源码求解(见文中)
    目录一、代数模型(AlgebraicModels)详解1.1什么是代数模型?1.2代数模型的基本形式1.3安装所需要的Python包--运行下述案例1.4代数模型的应用案例案例1:市场供需平衡模型Python求解代码Python求解结果如下图:案例2:运输问题中的线性规划模型进行数学建模分析1.目标函数2.......
  • python https 下载文件
    同步下载defdownload_file_block(url:str,file_path:str):logging.basicConfig(level=logging.DEBUG)log=logging.getLogger('requests.packages.urllib3')log.setLevel(logging.DEBUG)log.propagate=TrueclassDebugAdapter(HTTPAd......