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