Skip to content

Commit aac223e

Browse files
committed
some irisasync support
1 parent f9c79a0 commit aac223e

File tree

6 files changed

+43
-9
lines changed

6 files changed

+43
-9
lines changed

setup.cfg

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ addopts= --tb native -v -r fxX --maxfail=25 -p no:warnings
3333

3434
[db]
3535
default=iris://_SYSTEM:SYS@localhost:1972/USER
36+
iris=iris://_SYSTEM:SYS@localhost:1972/USER
37+
irisasync=iris+irisasync://_SYSTEM:SYS@localhost:1972/USER
3638
irisemb=iris+emb:///
3739
sqlite=sqlite:///:memory:
3840

setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
"sqlalchemy.dialects": [
99
"iris = sqlalchemy_iris.iris:IRISDialect_iris",
1010
"iris.emb = sqlalchemy_iris.embedded:IRISDialect_emb",
11+
"iris.irisasync = sqlalchemy_iris.irisasync:IRISDialect_irisasync",
1112
]
1213
},
1314
)

sqlalchemy_iris/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131

3232
_registry.register("iris.iris", "sqlalchemy_iris.iris", "IRISDialect_iris")
3333
_registry.register("iris.emb", "sqlalchemy_iris.embedded", "IRISDialect_emb")
34+
_registry.register("iris.irisasync", "sqlalchemy_iris.irisasync", "IRISDialect_irisasync")
3435

3536
__all__ = [
3637
"BIGINT",

sqlalchemy_iris/base.py

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -884,8 +884,12 @@ def __init__(self, **kwargs):
884884

885885
def _get_server_version_info(self, connection):
886886
server_version = connection.connection._connection_info._server_version
887-
server_version = server_version[server_version.find("Version") + 8:].split(" ")[0].split(".")
888-
return tuple([int(''.join(filter(str.isdigit, v))) for v in server_version])
887+
server_version = (
888+
server_version[server_version.find("Version") + 8 :]
889+
.split(" ")[0]
890+
.split(".")
891+
)
892+
return tuple([int("".join(filter(str.isdigit, v))) for v in server_version])
889893

890894
_isolation_lookup = set(
891895
[
@@ -906,17 +910,23 @@ def on_connect(conn):
906910
super_(conn)
907911

908912
if self.embedded:
909-
self.supports_vectors = conn.iris.cls("%SYSTEM.License").GetFeature(28) == 1
913+
self.supports_vectors = (
914+
conn.iris.cls("%SYSTEM.License").GetFeature(28) == 1
915+
)
910916
else:
911917
try:
912918
iris = IRISNative.createIRIS(conn)
913-
self.supports_vectors = iris.classMethodBoolean("%SYSTEM.License", "GetFeature", 28)
914-
except: # noqa
919+
self.supports_vectors = iris.classMethodBoolean(
920+
"%SYSTEM.License", "GetFeature", 28
921+
)
922+
except: # noqa
915923
self.supports_vectors = False
916924
if self.supports_vectors:
917925
with conn.cursor() as cursor:
918926
# Distance or similarity
919-
cursor.execute("select vector_cosine(to_vector('1'), to_vector('1'))")
927+
cursor.execute(
928+
"select vector_cosine(to_vector('1'), to_vector('1'))"
929+
)
920930
self.vector_cosine_similarity = cursor.fetchone()[0] == 0
921931

922932
self._dictionary_access = False
@@ -1511,9 +1521,9 @@ def get_multi_foreign_keys(
15111521
table_fkey[rfknm] = fkey = {
15121522
"name": rfknm,
15131523
"constrained_columns": [],
1514-
"referred_schema": rschema
1515-
if rschema != self.default_schema_name
1516-
else None,
1524+
"referred_schema": (
1525+
rschema if rschema != self.default_schema_name else None
1526+
),
15171527
"referred_table": rtbl,
15181528
"referred_columns": [],
15191529
"options": {},

sqlalchemy_iris/irisasync.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from .base import IRISDialect
2+
3+
4+
class IRISDialect_irisasync(IRISDialect):
5+
driver = "irisasync"
6+
7+
is_async = True
8+
supports_statement_cache = True
9+
10+
@classmethod
11+
def import_dbapi(cls):
12+
import intersystems_iris.dbapi._DBAPI as dbapi
13+
14+
return dbapi
15+
16+
17+
dialect = IRISDialect_irisasync

tests/conftest.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88

99
registry.register("iris.iris", "sqlalchemy_iris.iris", "IRISDialect_iris")
1010
registry.register("iris.emb", "sqlalchemy_iris.embedded", "IRISDialect_emb")
11+
registry.register(
12+
"iris.irisasync", "sqlalchemy_iris.irisasync", "IRISDialect_irisasync"
13+
)
1114

1215
pytest.register_assert_rewrite("sqlalchemy.testing.assertions")
1316

0 commit comments

Comments
 (0)