#!/usr/bin/env python
#coding=utf-8
import subprocess
import json
import os
import psycopg2
import re
import sys
import psycopg2.extras
def airtable(air_api_url,air_api_token):
dev_null = open(os.devnull, 'w')
list1 = []
list2 = []
air_api_url_base = air_api_url
list_all = []
while True:
response = subprocess.check_output('curl "%s" -H "Authorization: Bearer %s"' %(air_api_url,air_api_token), shell=True, stderr=dev_null).decode('utf-8').replace('\n', '')
res = json.loads(response)['records']
list_all.extend(res)
if 'offset' in json.loads(response).keys():
print('airtable访问的url:' + air_api_url_base + '?offset=' + json.loads(response)['offset'].replace('/','%2F'))
air_api_url = air_api_url_base + '?offset=' + json.loads(response)['offset'].replace('/', '%2F')
else:
break
print('airtable表中总计行数为:' + str(len(list_all)))
for i in list_all:
space = []
connect = []
slash = []
i['fields']['id'] = i['id']
for key in i['fields']:
if ' ' in key:
space.append(key)
elif '-' in key:
connect.append(key)
elif '/' in key:
slash.append(key)
else:
pass
for j in space:
i['fields'][j.replace(' ','_')] = i['fields'][j]
del i['fields'][j]
for g in connect:
i['fields'][g.replace('-','_')] = i['fields'][g]
del i['fields'][g]
for h in slash:
i['fields'][h.replace('/','_')] = i['fields'][h]
del i['fields'][h]
for key,value in i['fields'].items():
i['fields'][key]=str(value).replace('\'','\"')
list1.append(i['fields'])
#break
for i in list1:
list2 = list(set(list2).union(set(list(i.keys()))))
return list2,list1
def diff_list(list1,list2):
list1 = {item.lower() for item in list1}
list2 = {item.lower() for item in list2}
if set(list1).difference(set(list2)) == set():
return True
else:
return
python实现airtable导出数据到数据库中
该博客介绍了如何通过Python脚本`airtable_export_to_pg.py`将Airtable的数据导出到PostgreSQL数据库。文章详细说明了所需的参数,包括Airtable API URL和API token,以及PostgreSQL的数据库名、主机、端口、模式、表名、用户名和密码。还提到了数据导入的三种模式:merge、append和overwrite,并解释了它们的区别。
摘要由CSDN通过智能技术生成