-
Notifications
You must be signed in to change notification settings - Fork 416
Expand file tree
/
Copy pathsimple_example.py
More file actions
85 lines (71 loc) · 2.83 KB
/
simple_example.py
File metadata and controls
85 lines (71 loc) · 2.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# Copyright(C) 2023 InfiniFlow, Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
'''
This example is about connecting to the local infinity instance, creating table, inserting data, and searching data
'''
import infinity
from infinity.table import ExplainType
import sys
try:
# Use infinity_embedded module to open a local directory
# infinity_instance = infinity.connect("/var/infinity")
# Use infinity module to connect a remote server
infinity_instance = infinity.connect(infinity.common.NetworkAddress("127.0.0.1", 23817))
# 'default_db' is the default database
db_instance = infinity_instance.get_database("default_db")
# Drop my_table if it already exists
db_instance.drop_table("my_table", infinity.common.ConflictType.Ignore)
# Create a table named "my_table"
table_instance = db_instance.create_table("my_table", {
"num": {"type": "integer", "constraints": ["PRIMARY KEY"]},
"body": {"type": "varchar"},
"vec": {"type": "vector, 4, float"},
})
# Insert 3 rows of data into the 'my_table'
table_instance.insert(
[
{
"num": 1,
"body": r"unnecessary and harmful",
"vec": [1.0, 1.2, 0.8, 0.9],
},
{
"num": 2,
"body": r"Office for Harmful Blooms",
"vec": [4.0, 4.2, 4.3, 4.5],
},
{
"num": 3,
"body": r"A Bloom filter is a space-efficient probabilistic data structure, conceived by Burton Howard Bloom in 1970, that is used to test whether an element is a member of a set.",
"vec": [4.0, 4.2, 4.3, 4.5],
},
]
)
res, extra_result = table_instance.output(["num", "body", "vec"]).to_pl()
print(res)
if extra_result is not None:
print(extra_result)
res, extra_result = table_instance.output(["num", "body", "vec"]).filter("num = 1").to_pl()
print(res)
if extra_result is not None:
print(extra_result)
res = table_instance.output(["num", "body", "vec"]).explain(ExplainType.Pipeline)
print(res)
db_instance.drop_table("my_table", infinity.common.ConflictType.Error)
infinity_instance.disconnect()
print('test done')
sys.exit(0)
except Exception as e:
print(str(e))
sys.exit(-1)