Select by datetime using Python requests and format output

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.

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.

This topic was solved and automatically closed 15 days after the last reply. New replies are no longer allowed.