使用gspread和env文件googlesheets到Postgres数据库。

g2pg的Python项目详细描述


g2pg

g2pg获取一个Google表,将其转换为一个数据帧,然后您可以根据需要对其进行操作。在

然后可以将此数据帧写入PostgreSQL数据库表。在

这使用了一个.env文件,经过多次尝试和错误,我终于可以使用gspread了。在

可以使用pip install g2pg安装。在

使用:

import g2pg

它是如何工作的

g2pg使用gspread包从googlesheet中提取数据。在

按照以下说明获取可以与gspreadhttps://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_nameschema是可选的,如果未指定,它将默认为postgres中的publicindex_name是df的索引。如果未指定,它将默认为index(这将用作DB表中的主键)。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java应用程序不是在Eclipse中运行,而是在命令行中运行   swing Java图形组件问题。似乎找不到错误   我需要键盘。close();让代码正常工作?   Springboot中的java HttpSession   抽象语法树我想添加一个语句。我试图解析它,java解析器异常被抛出。如何克服它?   java Hibernate:清理会话   具有不连续子集的java划分问题   java正则表达式查找最后一个冒号后的字符串   java从SpringShell执行OS命令   Java扫描器字符串输入   java字符串索引越界异常(charAt)   java执行器服务终止被卡住   Springockito没有继承java@ContextConfiguration   java如何为一个servlet映射多个url   java安卓获取命令的stderr   java生成类型。表:数据库中的大数字   安卓 Getter Setter返回NothingJava