数据库_duckdb-数据类型以及函数类型

发布时间 2023-04-07 15:57:52作者: 辰令

数据引擎

强大的数据接入能力  通用数据服务接口 安全的数据管控
 (center STRUCT(x DOUBLE, y DOUBLE, z DOUBLE), 
  "type" VARCHAR, 
  rotation STRUCT(pitch DOUBLE, roll DOUBLE, yaw DOUBLE), 
  size STRUCT(x DOUBLE, y DOUBLE, z DOUBLE), 
  tracker_id UBIGINT, 
  occlusion UBIGINT)


   cur.execute('SET SESSION group_concat_max_len = 10240;')
   
  sqlite> .limit  
  SQLITE_MAX_LENGTH SQLITE_MAX_COLUMN  SQLITE_MAX_SQL_LENGTH	

 duckdb
   character_maximum_length	
      https://duckdb.org/docs/sql/information_schema	

Python-duckdb

fetchone
  不管查询结果是多条数据还是单条数据,使用fetchone得到的始终是一个元组。
  如果查询结果是单条数据:fetchone得到的单条数据的元组;
  如果查询结果是多条数据:fetchone默认是结果中的第一条数据构成的元组;
  这就决定了如果需要取元组中的数值,需要使用cur.fetchone[0]

fetchall
  不管查询结果是多条数据还是单条数据,使用fetchall得到的始终是一个由元组组成的列表。
  如果查询结果是单条数据:fetchall得到的是由单个元组组成的列表,列表内是有单条数据组成的元组,即列表包含元组;
  如果查询结果是多条数据:fetchall得到的是由多个元组组成的列表;
  这就决定了如果需要取元组中的数值,需要使用cur.fetchone[0][0]

使用场景
  一般来说,查询结果集是单条数据的,使用fetchone获取数据
  一般来说,查询结果集是多条数据的,使用fetchall获取数据
  对于使用fetchone和fetchall获取到的结果,最好使用之前先判断非空,否则在存在空值的情况下获取元组内的数据时,会报“超出索引”的异常。多次踩雷坑

数据类型与函数

###元数据
   current_schema()  md5(string)  hash(value)  txid_current()  uuid()
   
数据类型:General-Purpose Data Types   ested / Composite Types
 数值类型:Integer Types
          The types TINYINT, SMALLINT, INTEGER, BIGINT and HUGEINT store whole numbers
		  UTINYINT, USMALLINT, UINTEGER, UBIGINT
	Fixed-Point Decimals	
          DECIMAL(WIDTH,SCALE)	
    loating-Point Types
         	REAL  	DOUBLE Infinity -Infinity NaN
 文本和字符串:  strings can be stored in the VARCHAR field
 布尔类型: Boolean Type
 空值: NULL Values
 枚举类型: Enums 
 The blob (Binary Large OBject) type : such as images 
    函数: decode  encode
 Bitstrings 位串Bitstrings are strings of 1’s and 0’s. 	
 
 时间的 DATE, TIMESTAMP, or TIMESTAMP WITH TIME ZONE  TIMESTAMPTZ  Calendar 
 Interval  区间: years, days, or seconds	

表达式

  collations  校勘	 NOCASE, NOACCENT and NFC

函数

嵌套数据类型- 列表,结构体以及字典 nested data types: lists, structs, and maps.
  LIST column can have values with different lengths, but they must all have the same underlying type.==Postgres’s ARRAY type.  
  STRUCT column contains an ordered list of other columns called “entries”.: Each row   Each key
  MAPs must have a single type for all keys, and a single type for all values.
  UNION  they can contain multiple members of the same type, the tag names must be unique  at most 256 members.
嵌套函数-- Nested Functions
   list[index]  list_extract(list, index)  array_extract(list, index) list_pack(any, ...) list[begin:end] array_length(list) list_concat(list1, list2)
    array_sort  array_reverse_sort  list_unique
   struct.entry struct[entry] 	 struct_extract(struct, 'entry') struct_pack(name := any, ...)
   map[entry]  map_extract(map, key)  map()
   union.tag union_extract(union, 'tag') union_value(tag := any)
   Lambda Functions   generate_series list_aggregate list_filter(list, lambda)
	  
窗口函数: Window Functions
   row_number() OVER  rank_dense() rank() dense_rank() percent_rank()
  
TABLESAMPLE 

元函数:
  Information Schema  the catalog entries of the databas
  Metadata Functions: duckdb_functions() duckdb_tables()  duckdb_types	 duckdb_views()  
 
配置
  either the SET statement or the PRAGMA statement.	
执行计划:
 
荷兰-The Kingdom of the Netherlands-尼德兰 
  Holland一词将变为 Netherlands   风车、围海大堤以及郁金香
  荷兰的国家元首为奥兰治-拿骚家族成员担任的世袭君主,现任国王为威廉-亚历山大。是世袭君主立宪王国,
     立法权属国王和议会, 一院(参议院) 二院(众议院)
	 行政权属国王和内阁。枢密院为最高国务协商机构,主席为国王本人,其他成员由国王任命
	飞利浦
 印欧语系日耳曼语族西支  荷兰海牙  郑成功从荷兰殖民者手里收复台湾
   荷兰国家数学与计算机科学研究学会,荷语名为 Centrum Wiskunde & Informatica (简称 CWI 或 CWI Amsterdam)
R-language   
  R语言的创始人Ross Ihaka和Robert Gentleman,由于这两位“R之父”的名字都是以R开头,所以就称之为R语言。
  George Ross Ihaka:正在奥克兰大学统计系任副教授,新西兰第一大城市奥克兰市	 
	 ggplot2 Hadley Wickham,出生于新西兰
python 
 荷兰阿姆斯特丹	
	   Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品
	    吉多·范罗苏姆(Guido van Rossum) ,是一名荷兰计算机程序员,他作为 Python 程序设计语言的作者而为人们熟知
     pandas Wes McKinney是美国软件开发人员和商人

DuckDB 是阿姆斯特丹 Centrum Wiskunde&Informatica  (CWI)数学和理论计算研究中心的学者们的创意,
     它嵌入在一个主机进程中。无需安装、更新或维护 DBMS 服务器软件。
	 联合创始人兼首席执行官 Hannes Mühleisen 也是该代码的共同作者并维护该项目

MonetDB 是一个开源的列存储关系数据库管理系统(RDBMS) 荷兰阿姆斯特丹 Martin L. Kersten

Ruby之父 ,Matsumoto  Yukihiro(松本行弘),

C++和 C#的创造者都是丹麦人,母语是丹麦语,你可以说丹麦人发明了C和C++
Lua的创造者是巴西人,母语是葡萄牙语,
Pascal的创造者是瑞士人,母语好像是德语

Advent of Code 年度系列的日常编码挑战,发生在年终假期期间 在 12 月 1 日至 25 日期间,每天都会发布一个新谜题
    https://adventofcode.com/   
	December 1-25. It has run every year since 2015
	
 LeetCode https://leetcode.cn/ 

代码示例

#!/usr/bin/python3
# -*- coding: utf-8 -*- 

import duckdb
 
 # 创建DB(嵌入式DBMS)
conn = duckdb.connect(r'D:\coda_sample\dataset\parsejson.duckdb')
c = conn.cursor()
 
 # 通过从CSV中导入内容创建表格 一个全新的数据库,添加了两个新表,并用所有数据填充了它们

src_data = r"D:\data\test.json"
c.execute( "drop table  IF EXISTS features ")
## json_format	Can be one of ['auto', 'records', 'array_of_records', 'values', 'array_of_values']
sql_cmd= "CREATE TABLE features AS SELECT * FROM read_json('{}',auto_detect=true,json_format='records');".format(src_data)
print(sql_cmd)
c.execute( sql_cmd)
 
#查询数据
data = c.sql("SELECT * FROM features")
print(data)
print(c.sql("SELECT json_valid(array_to_json(labels))  FROM features"))
print(c.sql("COPY (SELECT  labels   FROM features) TO  'D:\data\lineitem.csv' (FORMAT CSV, DELIMITER '|', HEADER);"))
## 查看元数据
print(c.sql("SHOW TABLES"))
print(c.sql("DESCRIBE"))
print(c.sql("DESCRIBE features"))
##
print(c.sql("SELECT struct_extract(features,'pint_ath') FROM features"))
print(c.sql("SELECT len(struct_extract(features,'labels') ) FROM features"))
print(c.sql("SELECT typeof( labels) FROM features"))
total_num= c.execute( "SELECT len( labels) FROM features").fetchone()
if total_num is not None:
    print(type(total_num),total_num)
for num in range(total_num[0]):
    print(num)
print(c.sql("SELECT labels[47] FROM features"))
print(c.sql("SELECT struct_extract(struct_extract(features,'labels')[1],'occlusion') FROM features"))
print(c.sql("SELECT struct_extract(struct_extract(features,'labels')[1],'center') FROM features"))
print(c.sql("SELECT struct_extract(labels[47],'type') FROM features"))
 
# dst_data = r"D:\coda_sample\road_pipe\dataset\old_songs.parquet"
# dst_sql_cmd = "COPY ( SELECT   * FROM  features ) TO  '{}' (FORMAT PARQUET); ".format(dst_data)
# print(dst_sql_cmd)
# c.execute(dst_sql_cmd)	 

应用

 https://github.com/jwills/dbt-duckdb

Segment Anything

1.Task, Model and Data

 Segment Anything Model
    an image encoder, prompt encoder, and mask decoder.
	Vision Transformer(ViT) architecture.
	sparse  dense 
 Segment Anything Data
     data engine:  Manual stage Semi-automatic stage Fully automatic stage
	 Dataset: Segment Anything Dataset
	 
 Segment Anything Task
  user input prompt 

Demo and apply

deployment  employment

参考

 https://segment-anything.com/ 
 https://github.com/facebookresearch/segment-anything
 https://github.com/facebookresearch/segment-anything#model-checkpoints	 
 )sqlite中的限制:数据库大小、表数、列数、行数、参数个数、连接数等 转载 https://blog.51cto.com/u_15786574/5665045