@@ -39,8 +39,221 @@ For an example of using Python API with
39
39
`queue managers for Tarantool <https://github.com/tarantool/queue >`__, see
40
40
`queue-python <https://github.com/tarantool/queue-python >`__ project at GitHub.
41
41
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):
43
44
44
45
* `asynctnt <https://github.com/igorcoding/asynctnt >`__ with asyncio support
45
46
* `aiotarantool <https://github.com/shveenkov/aiotarantool >`__ also with asyncio support
46
47
* `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