Help

Welcome to the Airtable Community! If you're new here, check out our Getting Started area to get the most out of your community experience.

Select by datetime using Python requests and format output

Topic Labels: API
951 1
cancel
Showing results for 
Search instead for 
Did you mean: 

I’m accessing the Airtable API using a Python script below:

import requests
from pprint import pprint
from airtable import Airtable 

base_key = 'BASE_KEY'
table_name = 'Events List'
api_key = 'API_KEY'
airtable = Airtable(base_key, table_name, api_key)
pages = airtable.get_iter(maxRecords=3, sort=["Date"])

for page in pages:
    for record in page:
        pprint(record)

The above successfully retrieves the first 3 records in the table as follows:

{'createdTime': '2020-08-15T10:04:49.000Z',
 'fields': {'Date': '2020-08-15T19:00:00.000Z',
            'Description': 'Lorem ipsum dolor sit amet,',
            'ID': 20,
            'Title': 'Proin laoreet facilisis cursus',
            'URL': 'https://www.example1.com/'},
 'id': 'rec4oT3PiXXXXX9ph'}
{'createdTime': '2020-08-15T10:05:50.000Z',
 'fields': {'Date': '2020-08-15T20:00:00.000Z',
            'Description': 'Pellentesque viverra gravida lectus',
            'ID': 21,
            'Title': 'Curabitur porttitor vehicula urna',
            'URL': 'https://www.example2.com/'},
 'id': 'recO21GCXXXXX2pv1'}
{'createdTime': '2020-08-15T19:40:26.000Z',
 'fields': {'Date': '2020-08-17T17:00:00.000Z',
            'Description': 'Aliquam condimentum iaculis odio',
            'ID': 23,
            'Title': 'Suspendisse aliquet porta risus',
            'URL': 'https://www.example2.com/'},
 'id': 'recvduwKBFXXXXX8j'}

I want to do a number of things with the data:

a) I want to retrieve all records where (‘Date’ >= NOW) to pull up events that are in the future.

b) I would like to order the records retrieved by ‘Date’

c) I would like to format the data retrieved - something like this:

Date: '2020-08-15T19:00:00.000Z'
Description: 'Lorem ipsum dolor sit amet'
Title: 'Proin laoreet facilisis cursus'
URL: 'https://www.example1.com/'

Date: '2020-08-15T20:00:00.000Z'
Description: 'Pellentesque viverra gravida lectus'
Title: 'Curabitur porttitor vehicula urna'
URL: 'https://www.example2.com/'

Date': '2020-08-17T17:00:00.000Z'
Description': 'Aliquam condimentum iaculis odio'
Title': 'Suspendisse aliquet porta risus'
URL': 'https://www.example2.com/'

I can filter out unwanted fields using the following:

at.get(table_name, table_name, record_id=None, limit=0, offset=None,
       filter_by_formula=None, view=None, max_records=0, fields=[])

I just need a hint about how to filter on the date field and how to format the outputted data.

Hope you can help and thanks in advance.

1 Reply 1

The following retrieves the records where (‘Date’ >= NOW) and orders the records retrieved by ‘Date’:

pages = airtable.get_iter(maxRecords=3, formula="Date >= NOW()", sort=["Date"], fields=('Date', 'Title', 'Description'))

The above gives me the following:

{'createdTime': '2020-08-27T08:23:09.000Z',
 'fields': {'Date': '2020-09-02T19:00:00.000Z',
            'Description': 'Lorem ipsum dolor sit amet",
            'Title': 'Proin laoreet facilisis cursus'},
 'id': 'rec4oT3PiXXXXX9ph'}
{'createdTime': '2020-08-27T08:28:20.000Z',
 'fields': {'Date': '2020-09-03T08:00:00.000Z',
            'Description': 'Pellentesque viverra gravida lectus',
            'Title': 'Curabitur porttitor vehicula urna'},
 'id': 'reck4DyBmip3GJ9V0'}
{'createdTime': '2020-08-27T08:31:07.000Z',
 'fields': {'Date': '2020-09-03T08:30:00.000Z',
            'Description': 'Aliquam condimentum iaculis odio',
            'Title': 'Suspendisse aliquet porta risus'},
 'id': 'recgyHXNlcl8Y14Gx'}

The next stage is to format the results to be more readable and to strip out the ‘createdTime’ and ‘id’ fields.