Skip to content

Commit 0852a1f

Browse files
committed
Added test for arrays with SQLAlchemy - #96
1 parent 43b809f commit 0852a1f

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

tests/test_sqlalchemy.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import numpy as np
22
from pgvector.sqlalchemy import VECTOR, HALFVEC, BIT, SPARSEVEC, SparseVector, avg, sum
33
import pytest
4-
from sqlalchemy import create_engine, insert, inspect, select, text, MetaData, Table, Column, Index, Integer
4+
from sqlalchemy import create_engine, insert, inspect, select, text, MetaData, Table, Column, Index, Integer, ARRAY
55
from sqlalchemy.exc import StatementError
66
from sqlalchemy.ext.automap import automap_base
77
from sqlalchemy.orm import declarative_base, Session
@@ -31,6 +31,7 @@ class Item(Base):
3131
half_embedding = mapped_column(HALFVEC(3))
3232
binary_embedding = mapped_column(BIT(3))
3333
sparse_embedding = mapped_column(SPARSEVEC(3))
34+
embeddings = mapped_column(ARRAY(VECTOR(3)))
3435

3536

3637
Base.metadata.drop_all(engine)
@@ -70,7 +71,8 @@ def test_core(self):
7071
Column('embedding', VECTOR(3)),
7172
Column('half_embedding', HALFVEC(3)),
7273
Column('binary_embedding', BIT(3)),
73-
Column('sparse_embedding', SPARSEVEC(3))
74+
Column('sparse_embedding', SPARSEVEC(3)),
75+
Column('embeddings', ARRAY(VECTOR(3)))
7476
)
7577

7678
metadata.drop_all(engine)
@@ -422,6 +424,14 @@ def test_automap(self):
422424
item = session.query(AutoItem).first()
423425
assert item.embedding.tolist() == [1, 2, 3]
424426

427+
def test_vector_array(self):
428+
session = Session(engine)
429+
session.add(Item(id=1, embeddings=[np.array([1, 2, 3]), np.array([4, 5, 6])]))
430+
session.commit()
431+
432+
# this fails if the driver does not cast arrays
433+
# item = session.get(Item, 1)
434+
425435
@pytest.mark.asyncio
426436
@pytest.mark.skipif(sqlalchemy_version == 1, reason='Requires SQLAlchemy 2+')
427437
async def test_async(self):

0 commit comments

Comments
 (0)