使用gspread和env文件googlesheets到Postgres数据库。
g2pg的Python项目详细描述
g2pg
g2pg获取一个Google表,将其转换为一个数据帧,然后您可以根据需要对其进行操作。在
然后可以将此数据帧写入PostgreSQL数据库表。在
这使用了一个.env
文件,经过多次尝试和错误,我终于可以使用gspread了。在
可以使用pip install g2pg
安装。在
使用:
import g2pg
它是如何工作的
g2pg使用gspread
包从googlesheet中提取数据。在
按照以下说明获取可以与gspread
https://gspread.readthedocs.io/en/latest/oauth2.html#for-bots-using-service-account一起使用的json凭据文件
确保与凭据文件中指定的电子邮件共享任何gsheet。在
json凭证需要存储在.env
文件中。除非你想让每个人都知道你的秘密,否则不要将.env或json_凭据文件的内容上载到github。在
如果使用此包,则需要按以下方式设置.env
文件或环境变量。在
DB_USER= 'username'
DB_PW = 'super_secret_password'
DB_URL = 'db_address'
DB_NAME = 'db_name'
SHEET_TYPE= 'service_account'
SHEET_PROJECT_ID= 'api-project-XXX'
SHEET_PRIVATE_KEY_ID= '2cd … ba4'
SHEET_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nNrDyLw … jINQh/9\n-----END PRIVATE KEY-----\n"
SHEET_CLIENT_EMAIL= 'yoursisdifferent@developer.gserviceaccount.com'
SHEET_CLIENT_ID= '1234567890'
SHEET_AUTH_URI= 'https://accounts.google.com/o/oauth2/auth'
SHEET_TOKEN_URI= 'https://oauth2.googleapis.com/token'
SHEET_AUTH_PROVIDER_X509_CERT_URL= 'https://www.googleapis.com/oauth2/v1/certs'
SHEET_CLIENT_X509_CERT_URL= 'https://www.googleapis.com/robot/v1/metadata/bla...bla..bla.iam.gserviceaccount.com'
有两种方法可用:
def get_df_from_gsheet(gsheet_name,worksheet_name)
这将从指定的Google工作表返回一个datframe工作表工作表名称是可选的,将默认为Sheet1
。 dataframe将删除没有数据的所有列和行,列名将转换为数据库友好的格式。在def df_to_db(df, table_name,schema, index_name)
这会将指定的df
写入.env
文件中指定的DB中的table_name
。schema
是可选的,如果未指定,它将默认为postgres中的public
。index_name
是df的索引。如果未指定,它将默认为index(这将用作DB表中的主键)。在
- 项目
标签: