8000 Added Bit class for Psycopg 2 · pgvector/pgvector-python@94084bc · GitHub
[go: up one dir, main page]

Skip to content

Commit 94084bc

Browse files
committed
Added Bit class for Psycopg 2
1 parent 26b69ca commit 94084bc

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

pgvector/psycopg2/__init__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import psycopg2
2+
from .bit import register_bit_info
23
from .halfvec import register_halfvec_info
34
from .sparsevec import register_sparsevec_info
45
from .vector import register_vector_info
5-
from ..utils import SparseVector
6+
from ..utils import Bit, SparseVector
67

78
__all__ = ['register_vector']
89

@@ -16,6 +17,8 @@ def register_vector(conn_or_curs=None):
1617
except psycopg2.errors.UndefinedObject:
1718
raise psycopg2.ProgrammingError('vector type not found in the database')
1819

20+
register_bit_info()
21+
1922
try:
2023
cur.execute('SELECT NULL::halfvec')
2124
register_halfvec_info(cur.description[0][1])

pgvector/psycopg2/bit.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from psycopg2.extensions import adapt, register_adapter
2+
from ..utils import Bit
3+
4+
5+
class BitAdapter:
6+
def __init__(self, value):
7+
self._value = value
8+
9+
def getquoted(self):
10+
return adapt(Bit.to_db(self._value)).getquoted()
11+
12+
13+
def register_bit_info():
14+
register_adapter(Bit, BitAdapter)

tests/test_psycopg2.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import numpy as np
2-
from pgvector.psycopg2 import register_vector, SparseVector
2+
from pgvector.psycopg2 import register_vector, Bit, SparseVector
33
import psycopg2
44

55
conn = psycopg2.connect(dbname='pgvector_python_test')
@@ -37,7 +37,7 @@ def test_halfvec(self):
3737
assert res[1][0] is None
3838

3939
def test_bit(self):
40-
embedding = '101'
40+
embedding = Bit('101')
4141
cur.execute('INSERT INTO psycopg2_items (binary_embedding) VALUES (%s), (NULL)', (embedding,))
4242

4343
cur.execute('SELECT binary_embedding FROM psycopg2_items ORDER BY id')

0 commit comments

Comments
 (0)
0