In [1]:
import requests
import json

In [2]:
#res = requests.get("https://api.airtable.com/v0/appNcYtL8fFZa1STA/iris?api_key=keyshdNC8CZdj1xgo")

Base_ID = 'appNcYtL8fFZa1STA'
Table_name = 'iris'

# url格式: API URL/v版本/Base_ID/Table_Name
url = 'https://api.airtable.com/v0/{0}/{1}'.format(Base_ID, Table_name);

API_KEY = {'api_key': 'keyshdNC8CZdj1xgo'}

#Authorization格式: Bearer YOUR_API_KEY
Aut_cxt_header = {'Authorization': 'Bearer keyshdNC8CZdj1xgo', 'Content-type': 'application/json'}
Aut_header = {'Authorization': 'Bearer keyshdNC8CZdj1xgo'}

payload = {
  "fields": {
    "花萼長度": "9.9",
    "花萼寬度": "9.9",
    "花瓣長度": "9.9",
    "花瓣寬度": "9.9",
    "屬種": "new type"
  }
}

In [3]:
url


Out[3]:
'https://api.airtable.com/v0/appNcYtL8fFZa1STA/iris'

新增刪修格式

GET - 查詢 (Retrieve)
r = requests.get(url, params=API_KEY)

#query by record ID:
query_by_id_url = url +"/"+ "record_id"
r = requests.get(query_by_id_url, headers=(Aut_cxt_header))
POST - 新增 (Create)

#POST with form-encoded data

(不使用) r = requests.post(url, data=payload, headers=(Aut_cxt_header))

# POST with JSON import json
r = requests.post(url, data=json.dumps(payload), headers=(Aut_cxt_header))
PATCH - 修改 (Update)部份欄位:some (but not all) fields
query_by_id_url = url +"/"+ "record_id"
r = requests.patch(query_by_id_url, data=json.dumps(payload), headers=(Aut_cxt_header))
PUT - 修改 (Update)全部欄位:all fields
query_by_id_url = url +"/"+ "record_id"
r = requests.put(query_by_id_url, data=json.dumps(payload), headers=(Aut_cxt_header))
DELETE - 刪除 (Delete)
query_by_id_url = url +"/"+ "delete target record id"
r = requests.delete(query_by_id_url, headers=(Aut_header))
查詢語法
requests.post?

Signature: requests.post(url, data=None, json=None, **kwargs)
Docstring:
Sends a POST request.

:param url: URL for the new :class:`Request` object.
:param data: (optional) Dictionary (will be form-encoded), bytes, or file-like object to send in the body of the :class:`Request`.
:param json: (optional) json data to send in the body of the :class:`Request`.
:param \*\*kwargs: Optional arguments that ``request`` takes.
:return: :class:`Response <Response>` object
:rtype: requests.Response
File:      c:\anaconda3\lib\site-packages\requests\api.py
Type:      function
帶查詢條件: maxrecord, pagesize, and api_key

https://api.airtable.com/v0/appNcYtL8fFZa1STA/iris?maxRecords=100&pageSize=2&api_key=keyshdNC8CZdj1xgo

Pagination (關於分頁設定,pageSize預設100筆)

The server returns one page of records at a time. Each page will contain pageSize records, which is 100 by default.

offset (分頁的下一頁面第一筆記錄的ID)

If there are more records, the response will contain an offset. To fetch the next page of records, include offset in the next request's parameters.


In [4]:
query_string = {'api_key':'keyshdNC8CZdj1xgo', 'maxRecords':'100', 'pageSize':'2',
                'filterByFormula':'{屬種} = "new type"'} #pageSize:一個頁面顯示(取回)幾筆資料
r = requests.get(url, params=query_string)
r.status_code


Out[4]:
200

In [5]:
r.text


Out[5]:
'{"records":[{"id":"rec7FyUfaCBL944p7","fields":{"花萼長度":"11","花萼寬度":"11","花瓣長度":"11","花瓣寬度":"11","屬種":"new type"},"createdTime":"2017-10-09T02:01:27.000Z"},{"id":"recTuDUys33tGHrTd","fields":{"花萼長度":"9.9","花萼寬度":"9.9","花瓣長度":"9.9","花瓣寬度":"9.9","屬種":"new type"},"createdTime":"2017-10-09T02:01:11.000Z"}],"offset":"itr3XW496ndJKbMd5/recTuDUys33tGHrTd"}'
查詢單筆資料

In [6]:
#查詢單筆資料
query_by_id_url = url +"/"+ "rec06Uv00gLHpXCsK" #url+record_id
r = requests.get(query_by_id_url, headers=(Aut_cxt_header)) #also,it's work that Authorization send by query string.
r.status_code


Out[6]:
200

In [7]:
query_by_id_url


Out[7]:
'https://api.airtable.com/v0/appNcYtL8fFZa1STA/iris/rec06Uv00gLHpXCsK'

In [8]:
r.text


Out[8]:
'{"id":"rec06Uv00gLHpXCsK","fields":{"花萼長度":"7","花萼寬度":"3.2","花瓣長度":"4.7","花瓣寬度":"1.4","屬種":"Iris-versicolor"},"createdTime":"2017-10-07T07:32:40.000Z"}'

新增資料


In [9]:
r = requests.post(url, data=json.dumps(payload), headers=(Aut_cxt_header))
r.status_code


Out[9]:
200

In [10]:
r.text #剛才新增的記錄資料,會被 Return.


Out[10]:
'{"id":"recXX06GaZcWsjdxk","fields":{"花萼長度":"9.9","花萼寬度":"9.9","花瓣長度":"9.9","花瓣寬度":"9.9","屬種":"new type"},"createdTime":"2017-10-09T05:52:36.546Z"}'

刪除資料


In [11]:
query_by_id_url = url +"/"+ "recXX06GaZcWsjdxk" #url+record_id
r = requests.delete(query_by_id_url, headers=(Aut_header))
r.status_code


Out[11]:
200

In [12]:
query_by_id_url


Out[12]:
'https://api.airtable.com/v0/appNcYtL8fFZa1STA/iris/recXX06GaZcWsjdxk'

修改資料


In [13]:
query_by_id_url = url +"/"+ "rec7FyUfaCBL944p7"
payload = {
  "fields": {
    "花萼長度": "11",
    "花萼寬度": "11",
    "花瓣長度": "11",
    "花瓣寬度": "11",
    "屬種": "new type"
  }
}
r = requests.put(query_by_id_url, data=json.dumps(payload), headers=(Aut_cxt_header))
r.status_code


Out[13]:
200

In [14]:
r.text


Out[14]:
'{"id":"rec7FyUfaCBL944p7","fields":{"花萼長度":"11","花萼寬度":"11","花瓣長度":"11","花瓣寬度":"11","屬種":"new type"},"createdTime":"2017-10-09T02:01:27.000Z"}'

In [ ]: