with运行

import duckdb
with duckdb.connect('验证.duckdb', read_only=True) as con: # read_only只读
    result = con.execute("SELECT * FROM 日志").fetch_df() # 获取DataFrame格式
    result = con.execute("SELECT * FROM 日志").fetchall() # 获取所有
    result = con.execute("SELECT * FROM 日志").fetchone() # 获取一条
    result = con.sql("SELECT * FROM 日志").show() # 显示数据

获取所有表,及结构

import duckdb

with duckdb.connect('验证.duckdb') as con:
    # 查看所有表
    tables = con.sql("SHOW TABLES").fetchall()
    for table in tables:
        print(table[0])  # 表名在结果的第一列
        jiegou = con.sql(f"DESCRIBE {table[0]}").fetchdf()
        print(jiegou)

添加记录

import duckdb

with duckdb.connect("验证.duckdb") as con:
    con.execute(
        """INSERT INTO 表名字 (列名字, 列名字, 列名字)VALUES (?, ?, ?)""",(1, 1, 1),)

删除记录

con.execute("DELETE FROM 表名字 WHERE 列名字 = '1'")  # 约束
con.execute("DELETE FROM 表名字")  # 清空数据

更新数据

con.execute("""
UPDATE 表名字 
SET 
    列名字 = ?,
    列名字 = ?
WHERE 列名字 = ?
""", (1,1,1))

强制删除表

con.execute("DROP TABLE 表名字")

创建表格

CREATE TABLE user_info (
    -- 整数类型
    age int,                 -- 不制定长度整数
	age TINYINT,             -- 8位整数(-128~127)
    small_value SMALLINT,    -- 16位整数(-32768~32767)
	login_count INTEGER,     -- 32位整数(-2,147,483,648 到 2,147,483,647)
    user_id BIGINT,          -- 64位整数(适合天文数字)
  
    
    -- 浮点类型
    salary DOUBLE,           -- 64位双精度浮点数
    rating FLOAT,            -- 32位单精度浮点数
    balance DECIMAL(10,2),   -- 精确小数(总位数10,小数位2)
    
    -- 字符类型
    username VARCHAR(50),    -- 可变长度字符串(最大50)
    country CHAR(2),         -- 定长字符串(2字符)
    description TEXT,        -- 不限长文本
    
    -- 日期/时间类型
    birth_date DATE,         -- 日期(YYYY-MM-DD)
    last_login TIMESTAMP,    -- 时间戳(YYYY-MM-DD HH:MM:SS)
    work_hours TIME,         -- 时间(HH:MM:SS)
    
    -- 其他类型
    is_active BOOLEAN,       -- 布尔值(TRUE/FALSE)
    avatar BLOB,             -- 二进制数据
    user_uuid UUID,          -- UUID字符串
    
    -- ★★★ 约束条件统一放在最后 ★★★
    PRIMARY KEY (user_id),
    CHECK (age >= 0 AND age <= 120),
    UNIQUE (username),
    FOREIGN KEY (country) REFERENCES countries(code),
    CONSTRAINT valid_salary CHECK (salary > 0)
);