Skip to content

Commit 2db2cb9

Browse files
committed
Add a table with feature comparison of Python connectors
1 parent ea8024c commit 2db2cb9

File tree

1 file changed

+214
-1
lines changed

1 file changed

+214
-1
lines changed

doc/book/connectors/__python.rst

+214-1
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,221 @@ For an example of using Python API with
3939
`queue managers for Tarantool <https://github.com/tarantool/queue>`__, see
4040
`queue-python <https://github.com/tarantool/queue-python>`__ project at GitHub.
4141

42-
Also there are several community-driven Python connectors:
42+
Also there are several community-driven Python connectors (see table below with
43+
feature comparison):
4344

4445
* `asynctnt <https://github.com/igorcoding/asynctnt>`__ with asyncio support
4546
* `aiotarantool <https://github.com/shveenkov/aiotarantool>`__ also with asyncio support
4647
* `gtarantool <https://github.com/shveenkov/gtarantool>`__ with gevent support **no active maintenance**
48+
49+
Feature comparison
50+
------------------
51+
52+
Last update: December 2021
53+
54+
.. list-table::
55+
:header-rows: 1
56+
:stub-columns: 1
57+
58+
* - Parameter
59+
- `igorcoding/asynctnt <https://github.com/igorcoding/asynctnt>`__
60+
- `shveenkov/aiotarantool <https://github.com/shveenkov/aiotarantool>`__
61+
- `shveenkov/gtarantool <https://github.com/shveenkov/gtarantool>`__
62+
- `tarantool/tarantool-python <https://github.com/tarantool/tarantool-python>`__
63+
64+
* - License
65+
- Apache License 2.0
66+
- LGPL
67+
- LGPL
68+
- Modified BSD
69+
70+
* - Is maintained
71+
- Yes
72+
- No (last updated in 2016)
73+
- No (last updated in 2018)
74+
- Yes
75+
76+
* - Known Issues
77+
- `issue #18 <https://github.com/igorcoding/asynctnt/issues/18>`__
78+
- `issue #5 <https://github.com/shveenkov/aiotarantool/issues/5>`__
79+
(*select()* fails), `issue #16
80+
<https://github.com/shveenkov/aiotarantool/issues/16>`__ (Tarantool
81+
1.7 is unsupported)
82+
- None
83+
- `issue #105 <https://github.com/tarantool/tarantool-python/issues/105>`__ (Unpack of binary data)
84+
85+
* - Documentation
86+
- Yes (`github.io <https://igorcoding.github.io/asynctnt/>`__)
87+
- No
88+
- No
89+
- Yes (`tarantool.io
90+
<https://www.tarantool.io/en/doc/latest/getting_started/getting_started_python/>`__
91+
and `readthedocs
92+
<https://tarantool-python.readthedocs.io/en/latest/quick-start.en.html>`__
93+
(`obsolete
94+
<https://github.com/tarantool/tarantool-python/issues/67>`__))
95+
96+
* - Testing / CI / CD
97+
- Github Actions
98+
- No (tests exists)
99+
- No (tests exists)
100+
- Travis CI and Appveyor
101+
102+
* - Github Stars
103+
- 51
104+
- 38
105+
- 17
106+
- 78
107+
108+
* - Static Analysis
109+
- Yes (Flake8)
110+
- No
111+
- No
112+
- No
113+
114+
* - Packaging
115+
- `Pip <https://pypi.org/project/asynctnt/>`__
116+
- `Pip <https://pypi.org/project/aiotarantool/>`__
117+
- `Pip <https://pypi.org/project/gtarantool/>`__
118+
- `Deb, RPM, Pip <https://github.com/tarantool/tarantool-python#download-and-install>`__
119+
120+
* - Code coverage
121+
- Yes
122+
- No
123+
- No
124+
- Yes
125+
126+
* - Support asynchronous mode
127+
- Yes, `asyncio <https://docs.python.org/3/library/asyncio.html>`__
128+
- Yes, `asyncio <https://docs.python.org/3/library/asyncio.html>`__
129+
- Yes (`gevent
130+
<https://www.gevent.org/api/gevent.event.html#gevent.event.AsyncResult>`__,
131+
example: `test_gevent.py
132+
<https://github.com/shveenkov/gtarantool/blob/master/tests/test_gevent.py>`__)
133+
- No
134+
135+
* - Batching support
136+
- No
137+
- No
138+
- No
139+
- No (`issue #55 <https://github.com/tarantool/tarantool-python/issues/55>`__)
140+
141+
* - Schema reload, space and index names
142+
- Yes (*auto_refetch_schema*)
143+
- Yes (handle *SchemaReloadException*)
144+
- No
145+
- Yes (handle *SchemaReloadException*)
146+
147+
* - Schema reload, Access tuple fields by names
148+
- Yes
149+
- FIXME
150+
- FIXME
151+
- FIXME
152+
153+
* - `SQL support <https://www.tarantool.io/en/doc/latest/reference/reference_sql/>`__
154+
- Yes (tests/test_op_sql.py)
155+
- No (using call server-side functions)
156+
- No
157+
- Yes (tarantool/connection.py)
158+
159+
* - `Interactive transactions <https://www.tarantool.io/en/doc/latest/book/box/stream/>`__
160+
- No
161+
- No
162+
- No
163+
- No (`issue #163 <https://github.com/tarantool/tarantool-python/issues/163>`__)
164+
165+
* - `Varbinary support <https://www.tarantool.io/en/doc/latest/book/box/data_model/>`__
166+
- No
167+
- No
168+
- No
169+
- No
170+
171+
* - `UUID support <https://www.tarantool.io/en/doc/latest/book/box/data_model/>`__
172+
- No
173+
- No
174+
- No
175+
- No
176+
177+
* - `Decimal support <https://www.tarantool.io/en/doc/latest/book/box/data_model/>`__
178+
- Almost (v2 branch)
179+
- No
180+
- No
181+
- No
182+
183+
* - `EXT_ERROR support <https://www.tarantool.io/ru/doc/latest/dev_guide/internals/msgpack_extensions/#the-error-type>`__
184+
- No
185+
- No
186+
- No
187+
- No
188+
189+
* - `[Soon] <https://github.com/tarantool/tarantool/discussions/6244>`__ Datetime support
190+
- No
191+
- No
192+
- No
193+
- No
194+
195+
* - `box.session.push() responses <https://www.tarantool.io/ru/doc/latest/reference/reference_lua/box_session/push/>`__
196+
- Yes (see push_subscribe option and docs/pushes.rst)
197+
- No
198+
- No
199+
- No
200+
201+
* - `Session settings <https://www.tarantool.io/en/doc/latest/reference/reference_lua/box_space/_session_settings/>`__
202+
- No
203+
- No
204+
- No
205+
- No
206+
207+
* - `Graceful shutdown <https://github.com/tarantool/tarantool/issues/5924>`__
208+
- No
209+
- No
210+
- No
211+
- No
212+
213+
* - `IPROTO_ID (feature discovering) <https://github.com/tarantool/doc/issues/2419>`__
214+
- No
215+
- No
216+
- No
217+
- No
218+
219+
* - Support `CRUD <https://github.com/tarantool/crud>`__
220+
- No
221+
- No
222+
- No
223+
- No
224+
225+
* - Support retrying when appropriate
226+
- No
227+
- No
228+
- No
229+
- No
230+
231+
* - Implicit reconnecting strategy
232+
- autoreconnect
233+
- No
234+
- Yes? (reconnect_max_attempts, reconnect_delay)
235+
- Yes? (reconnect_max_attempts, reconnect_delay), checking of connection liveness
236+
237+
* - Round robin failover
238+
- No
239+
- No
240+
- No
241+
- Yes (see tarantool/mesh_connection.py)
242+
243+
* - `[Soon] <https://github.com/tarantool/tarantool/issues/6256>`__ Master discovering
244+
- No
245+
- No
246+
- No
247+
- Yes? (using call server-side function)
248+
249+
* - Using connection pool
250+
- No
251+
- No
252+
- No
253+
- No
254+
255+
* - Support of `PEP 249 -- Python Database API Specification v2.0 <https://www.python.org/dev/peps/pep-0249/>`__
256+
- No
257+
- No
258+
- No
259+
- `Yes <https://github.com/tarantool/tarantool-python/wiki/PEP-249-Database-API>`__

0 commit comments

Comments
 (0)