1
- # NocoDB Python Client
1
+ <div align =" center " >
2
+
3
+ # 🚀 NocoDB Python Client
4
+
5
+ [ ![ PyPI version] ( https://img.shields.io/badge/pypi-v0.4.0-blue.svg )] ( https://pypi.org/project/nocodb/ )
6
+ [ ![ License] ( https://img.shields.io/badge/license-MIT-green.svg )] ( LICENSE )
7
+ [ ![ Python Versions] ( https://img.shields.io/badge/python-3.6%20%7C%203.7%20%7C%203.8%20%7C%203.9%20%7C%203.10-blue )] ( https://pypi.org/project/nocodb/ )
8
+
9
+ ** Note: This is a fork of [ python-nocodb] ( https://github.com/elchicodepython/python-nocodb ) with extended functionality.**
10
+
11
+ <img src =" https://www.nocodb.com/brand/nocodb-banner.png " alt =" NocoDB Banner " width =" 600 " />
2
12
3
13
NocoDB is a great Airtable alternative. This client allows python developers
4
14
to use NocoDB API in a simple way.
5
15
6
- - [ Contributors guidelines ] ( contributors.md )
16
+ </ div >
7
17
8
- ## Installation
18
+ ## 📌 Table of Contents
19
+
20
+ - [ Installation] ( #installation )
21
+ - [ Usage] ( #usage )
22
+ - [ Client Configuration] ( #client-configuration )
23
+ - [ Project Creation] ( #project-creation )
24
+ - [ Table Row Operations] ( #table-row-operations )
25
+ - [ Table Operations] ( #table-operations )
26
+ - [ Table Column Operations] ( #table-column-operations )
27
+ - [ View Filter Operations] ( #view-filter-operations )
28
+ - [ Project Users Management] ( #project-users-management )
29
+ - [ Available Filters] ( #available-filters )
30
+ - [ Custom Filters] ( #custom-filters )
31
+ - [ Version Information] ( #version-information )
32
+ - [ Contributors] ( #contributors )
33
+
34
+ - [ Contributors Guidelines] ( contributors.md )
35
+
36
+ ## 📥 Installation
9
37
10
38
``` bash
11
39
pip install nocodb
12
40
```
13
41
14
- ## Usage
42
+ <details >
43
+ <summary >Development Installation</summary >
44
+
45
+ ``` bash
46
+ git clone https://github.com/santoshray02/python-nocodb.git
47
+ cd python-nocodb
48
+ pip install -e .
49
+ ```
50
+
51
+ </details >
52
+
53
+ ## 🔧 Usage
15
54
16
- ### Client configuration
55
+ ### 🔑 Client configuration
17
56
``` python
18
57
from nocodb.nocodb import NocoDBProject, APIToken, JWTAuthToken
19
58
from nocodb.filters import LikeFilter, EqFilter, And
@@ -37,7 +76,7 @@ client = NocoDBRequestsClient(
37
76
)
38
77
```
39
78
40
- ### Project creation
79
+ ### 📊 Project creation
41
80
``` python
42
81
# Example with default database
43
82
project_body = {" title" : " My new project" }
@@ -154,7 +193,107 @@ client.table_row_bulk_insert(project, table_name, rows_to_insert)
154
193
client.table_row_delete(project, table_name, row_id)
155
194
```
156
195
157
- ### Available filters
196
+ ### 📋 Table Operations
197
+
198
+ ``` python
199
+ # List all tables in a project
200
+ tables = client.table_list(project)
201
+
202
+ # Read table metadata
203
+ table_id = " table_id_from_table_list"
204
+ table_metadata = client.table_read(table_id)
205
+
206
+ # Get detailed table info
207
+ table_info = client.table_info(table_id)
208
+
209
+ # Create a new table
210
+ table_body = {
211
+ " table_name" : " NewTableName" ,
212
+ " columns" : [
213
+ {
214
+ " title" : " Title" ,
215
+ " column_name" : " title" ,
216
+ " dt" : " varchar"
217
+ },
218
+ {
219
+ " title" : " Description" ,
220
+ " column_name" : " description" ,
221
+ " dt" : " text"
222
+ }
223
+ ]
224
+ }
225
+ client.table_create(project, table_body)
226
+
227
+ # Update a table
228
+ table_update_body = {
229
+ " table_name" : " UpdatedTableName"
230
+ }
231
+ client.table_update(table_id, table_update_body)
232
+
233
+ # Reorder a table
234
+ client.table_reorder(table_id, order = 2 )
235
+
236
+ # Delete a table
237
+ client.table_delete(table_id)
238
+ ```
239
+
240
+ ### 🔢 Table Column Operations
241
+
242
+ ``` python
243
+ # Create a new column in a table
244
+ column_body = {
245
+ " title" : " Rating" ,
246
+ " column_name" : " rating" ,
247
+ " dt" : " int"
248
+ }
249
+ client.table_column_create(table_id, column_body)
250
+
251
+ # Update a column
252
+ column_id = " column_id_from_table_info"
253
+ column_update_body = {
254
+ " title" : " Score"
255
+ }
256
+ client.table_column_update(column_id, column_update_body)
257
+
258
+ # Set a column as primary
259
+ client.table_column_set_primary(column_id)
260
+
261
+ # Delete a column
262
+ client.table_column_delete(column_id)
263
+ ```
264
+
265
+ ### 🔍 View Filter Operations
266
+
267
+ ``` python
268
+ # Create a filter for a view
269
+ view_id = " view_id_from_view_list"
270
+ filter_body = {
271
+ " comparison_op" : " eq" ,
272
+ " value" : " Active" ,
273
+ " fk_column_id" : column_id
274
+ }
275
+ client.view_filter_create(view_id, filter_body)
276
+ ```
277
+
278
+ ### 👥 Project Users Management
279
+
280
+ ``` python
281
+ # Get users for a project with pagination
282
+ users_page = client.project_users_list(
283
+ project,
284
+ page = 1 ,
285
+ page_size = 25 ,
286
+ include_roles = True
287
+ )
288
+
289
+ # Get all users for a project (automatically handles pagination)
290
+ all_users = client.project_users_list_all(
291
+ project,
292
+ include_roles = True
293
+ )
294
+ ```
295
+
296
+ ### 🔎 Available filters
158
297
159
298
- EqFilter
160
299
- EqualFilter (Alias of EqFilter)
@@ -247,13 +386,76 @@ it has what I needed: A full CRUD with some filters.
247
386
248
387
Feel free to add new capabilities by creating a new MR.
249
388
250
- ## Contributors
389
+ ## 📋 Version Information
251
390
252
- ![ Contributors image] ( https://contrib.rocks/image?repo=elchicodepython/python-nocodb )
391
+ <div align =" center " >
392
+
393
+ ### ✨ Features Overview
394
+
395
+ | Feature Category | Capabilities |
396
+ | -----------------| -------------|
397
+ | 📝 ** Row Operations** | Create, Read, Update, Delete, Bulk Insert |
398
+ | 📊 ** Table Management** | Create, List, Read, Update, Delete, Reorder |
399
+ | 🔢 ** Column Management** | Create, Update, Delete, Set Primary |
400
+ | 👥 ** User Management** | List with pagination, List all users |
401
+ | 🔍 ** Filtering** | Multiple filter types, Custom filters, Combined conditions |
402
+ | 🔎 ** Query Options** | Sorting, Pagination, Field selection |
403
+
404
+ </div >
405
+
406
+ <div align =" center " >
407
+
408
+ ### 📈 Key Benefits
409
+
410
+ <table >
411
+ <tr >
412
+ <td align="center"><b>🚀 Efficient</b><br>Bulk operations support</td>
413
+ <td align="center"><b>🛠️ Complete</b><br>Full CRUD functionality</td>
414
+ <td align="center"><b>🔍 Flexible</b><br>Advanced filtering</td>
415
+ </tr >
416
+ <tr >
417
+ <td align="center"><b>🧩 Extensible</b><br>Custom filter support</td>
418
+ <td align="center"><b>👥 Collaborative</b><br>User management</td>
419
+ <td align="center"><b>📊 Powerful</b><br>Table & column operations</td>
420
+ </tr >
421
+ </table >
422
+
423
+ </div >
253
424
425
+ <div align =" center " >
254
426
427
+ ### 🏗️ Architecture
428
+
429
+ ``` mermaid
430
+ graph TD
431
+ A[Client Application] -->|uses| B(NocoDBClient)
432
+ B -->|implements| C[NocoDBRequestsClient]
433
+ C -->|uses| D[NocoDBAPI]
434
+ D -->|constructs| E[API URIs]
435
+ C -->|sends| F[HTTP Requests]
436
+ F -->|to| G[NocoDB Server]
437
+ ```
438
+
439
+ </div >
440
+
441
+ ## 👨💻 Contributors
442
+
443
+ ![ Contributors image] ( https://contrib.rocks/image?repo=elchicodepython/python-nocodb )
444
+
445
+ ### Original Authors
255
446
- Samuel López Saura @elchicodepython
256
447
- Ilya Sapunov @davert0
257
448
- Delena Malan @delenamalan
258
449
- Jan Scheiper @jangxx
259
450
451
+ ### Fork Maintainer
452
+ - Santosh Ray - VP of Technology [ @santoshray02 ] ( https://github.com/santoshray02 )
453
+ - Added bulk insert functionality
454
+ - Refactored project identification to use project_id instead of project_name in API endpoints
455
+ - Implemented and fixed project users listing functionality
456
+ - Added user API endpoints
457
+ - Created view filter implementation
458
+ - Added table_info function to retrieve table metadata
459
+ - Fixed UnicodeDecodeError by specifying UTF-8 encoding when reading README.md
460
+ - Enhanced documentation for all features
461
+
0 commit comments