Python interface to the Airtable's REST API - https://airtable.com -
For javascript enthusiasts: https://github.com/Airtable/airtable.js
Airtable Python uses Requests.py: make sure you have it installed by running
$ pip install requests
Once you have created a new base and a new table through the Web interface, you're ready to start using Airtable Python.
import airtable
at = airtable.Airtable('BASE_ID', 'ACCESS_TOKEN')
at.get('TABLE_NAME')
Here's an example of response from the Restaurant's example base
{u'records': [
{u'fields': {u'Diet': u'Kosher or Halal',
u'Friendly Restaurants': [u'recr0ITqq9C1I92FL', u'recGeAJLw0ZkbwdXZ'],
u'Icon': [{u'filename': u'no-pig.jpg',
u'id': u'attzKGOBbjndOx0FU',
u'size': 34006,
u'thumbnails': {u'large': {u'height': 202,
u'url': u'https://dl.airtable.com/trmtq3BaRoa0sWnyffWZ_large_no-pig.jpg',
u'width': 256},
u'small': {u'height': 36,
u'url': u'https://dl.airtable.com/yzuRv5CyRs2PVH4fDvCe_small_no-pig.jpg',
u'width': 46}},
u'type': u'image/jpeg',
u'url': u'https://dl.airtable.com/DyGOjAASze6AIkQxFpDv_no-pig.jpg'}],
u'People': [u'Annie', u'Maryam']},
u'id': u'rec5sD6mBBd0SaXof'},
...
The available methods closely mimic the REST API:
Given a table name, fetched one or multiple records.
at.get(table_name, record_id=None, limit=0, offset=None,
filter_by_formula=None, view=None, max_records=0, fields=[],
sort={})
where
table_name (required) is a string representing the table name record_id (optional) is a string, which fetches a specific item by id. If not specified, all items are fetched limit (optional) is an integer, and it can only be specified if record_id is not present, and limits the number of items fetched (see pageSize in the AirTable documentation) offset is a string representing the record id from which we start the offset filter_by_formula (optional) is a string to filter the retrieving records (see filterByFormula in the AirTable documentation) max_records (optional) is the total number of records that will be returned (see maxRecords in the AirTable documentation) fields (optional) is a list of strings with the field names to be returned sort (optional) is a dictionary of field names and directions, such as: {'publish_date': 'desc'}
Given a table name, fetched all records.
at.iterate(table_name, limit=0, offset=None,
filter_by_formula=None, view=None, max_records=0, fields=[],
sort={})
where
table_name (required) is a string representing the table name batch_size (optional) is an integer specifying the number of records to fetch per request. The default (0) uses the API default, which is (as of 2016-09) 100. limit (optional) is an integer, and it can only be specified if record_id is not present, and limits the number of items fetched (see pageSize in the AirTable documentation) filter_by_formula (optional) is a string to filter the retrieving records (see filterByFormula in the AirTable documentation) view (optional) is a string representing the name or ID of a view in the table. If set, only the records in that view will be returned. The records will be sorted according to the order of the view. max_records (optional) is the total number of records that will be returned (see maxRecords in the AirTable documentation) fields (optional) is a list of strings with the field names to be returned sort (optional) is a dictionary of field names and directions, such as: {'publish_date': 'desc'}
Note: this returns a generator instead, which you can use to loop each record:
# example with similar results of at.get
result = { "records": [] }
for r in self.at.iterate(self.table, fields=fields):
result["records"].append(r)
Creates a new entry in a table, and returns the newly created entry with its new ID.
at.create(table_name, data)
where
table_name (required) is a string representing the table name data (required) is a dictionary containing the fields and the respective values
Updates some fields in a specific entry in the table. Fields which are not explicitly included will not get updated
at.update(table_name, record_id, data)
where
table_name (required) is a string representing the table name record_id (required) is a string representing the item to update data (required) is a dictionary containing the fields (and the respective values) to be updated
Like the previous method, but updates all fields, clearing the ones that are not included in the request.
at.update_all(table_name, record_id, data)
Delete a specific record from the table
at.delete(table_name, record_id)
where
table_name (required) is a string representing the table name record_id (required) is a string representing the item to update
To release, tag the Git repo with a new version number, push that tag to GitHub then Travis CI will do the rest.