Important Changes related to Python client in SeaTable 6.2

The release of SeaTable 6.2 is just around the corner.

This release includes changes to SeaTable’s Python client that may require updates to your existing Python scripts. If your scripts use the Python client, please review them before upgrading to ensure they continue to work as expected.

This post explains why these changes were made, what exactly is changing, and what you need to do.

Who is affected?

This post is relevant if you use the SeaTable Python client in your Python scripts that you run manually or as part of an automation rule.

If you do not use Python scripts or you use Python scripts, but not SeaTable’s Python client, no action is required.

Background

SeaTable’s Python client makes it easy to write concise scripts that interact with your bases. However, one long-standing inconsistency has caused confusion: the format of returned data depended on

  • the method or object being used, and
  • whether the script was executed manually or through an automation.

Starting with SeaTable 6.2, these inconsistencies are removed. The Python client will return data in a consistent format regardless of where, how, or when a script is executed.

While this change improves the API and makes script behavior more predictable going forward, it is not fully backward compatible. Existing scripts that rely on the previous return formats may need to be updated.

If you host your own SeaTable Server instance, we strongly recommend reviewing your Python scripts before upgrading your SeaTable Server instance.

For SeaTable Cloud and SeaTable Dedicated customers, we will proactively contact the administrators of all teams that currently use Python scripts.

What has changed?

The changes affect the return formats of:

The tables below compare the current return formats with the new formats introduced in SeaTable 6.2.

Context object: current_row

Column type Column format Return format v6.1 Return format v6.2
Date International String: YYYY-MM-DD
(e. g. '2026-12-24' //
'2026-12-24 00:00')
String: ISO date-time incl. TZ
(e.g. '2026-12-24T00:00:00+01:00')
American
European
Germany, Russia
Formula Date - International String: YYYY-MM-DD
(e.g. '2026-12-24' //
'2026-12-24 00:00')
Date - American String: MM/DD/YYYY
(e.g. '12/24/2026' // '12/24/2026 00:00')
Date - European String: DD/MM/YYYY
(e.g. '24/12/2026' // '24/12/2026 00:00')
Date - Germany, Russia String: DD.MM.YYYY
(e.g. '24.12.2026' // '24.12.2026 00:00')
Number - Number Custom string Float
(e.g. 1234.00)
Number - Currency
Number - Percent Float
(e.g. 0.1234)
Link formula Date - International String: YYYY-MM-DD
(e.g. '2026-12-24' //
'2026-12-24 00:00')
List: ISO date-time TZ strings
(e.g. ['2026-12-24T00:00:00+01:00'])
Date - American String: MM/DD/YYYY
(e.g. '12/24/2026' // '12/24/2026 00:00')
Date - European String: DD/MM/YYYY
(e.g. '24/12/2026' // '24/12/2026 00:00')
Date - Germany, Russia String: DD.MM.YYYY
(e.g. '24.12.2026' // '24.12.2026 00:00')
Number - Number Custom string List: Floats
(e.g. [1234.00])
Number - Currency
Number - Percent List: Floats
(e.g. [0.1234])

Query method

Column type Column format Return format v6.1 Return format v6.2
Date International String: YYYY-MM-DD
(e.g. '2026-12-24')
String: ISO date-time incl. TZ
(e.g. '2026-12-24T00:00:00+01:00')
American String: YYYY-MM-DD HH:MM:SS
(e.g. '2026-12-24 00:00:00')
European
Germany, Russia

Conclusion

We realize that these changes may require you to update existing scripts, and we apologize for the inconvenience.

We believe the long-term benefits outweigh this one-time effort. By harmonizing the Python client’s return formats, writing and maintaining scripts becomes simpler and more predictable. It also improves compatibility with AI-assisted code generation, as scripts no longer need to account for different return formats.

Finally, Python scripts become truly portable: the same script behaves consistently regardless of whether it is run manually or triggered by an automation.

Thanks, Ralf, for the detailed information.

In our self-hosted SeaTable environment we are using a custom Python-Runner based directly on the Docker library/python:3.13 image.

Just to verify: We are affected by these changes when we build a new image using the latest version of the “seatable-api” (version 4.0.0 and higher) python package?

Just to verify: We are affected by these changes when we build a new image using the latest version of the “seatable-api” (version 4.0.0 and higher) python package?

This is partially correct.

The change in the format of the current_row attribute of the context object will start affecting you as soon as you upgrade SeaTable to version 6.2.12, i.e. upgrade the seatable-server container to version 6.2.12.

This is due to the fact that the information about the current row is fetched within the seatable-server container and passed onto the Python-Pipeline. The python-runner just exposes these values through the context object.


The change in the return format of the query() method will start affecting you as soon as you use an image for the Python runner that includes version 4.0.0 and higher of the seatable-api Python package.

You can find additional information about these changes in a forum post on the Chinese SeaTable forum: 6.2 版本Python API 和 Python 脚本运行器 不兼容性说明 - 建议反馈 - SeaTable 论坛
This post goes even more in-depth.


Since we only tested SeaTable v6.2.12 in combination with the newest python-runner image (image tag 6.2.2) that includes seatable-api v4.0.0, I’d strongly recommend updating both (your SeaTable server and the python-runner image) at the same time to ensure compatibility.