首页 > 其他分享 >向postgre插入数据

向postgre插入数据

时间:2023-11-08 18:02:37浏览次数:28  
标签:__ logging item url self db postgre 插入 数据

import psycopg2
import logging, time
import requests as req

DB_URI = 'postgresql://postgres:@{dbhost}:5432/{dbname}?application_name=json_parse'
DB_URI = DB_URI.format(dbhost='***', dbname='***')


class ConnectDB(object):
    def __init__(self,url):
        self.url=url

    def __enter__(self):
        self.conn = psycopg2.connect(self.url)
        return self.conn

    def __exit__(self, exc_type, exc_val, exc_tb):
        if self.conn:
            self.conn.close()
        self.conn=None


def update_db(sql, value):
    with ConnectDB(DB_URI) as db_con:
        with db_con.cursor() as cur:
            cur.executemany(sql, value)
            db_con.commit()


def get_ids():
    logging.basicConfig(filename='/home/zcy/ncbi/NCBI.log', level=logging.DEBUG,
                        format='%(asctime)s %(levelname)s %(lineno)s: %(message)s')
    email = 'zzzz'
    apk_key = 'zzzz'
    rooturl = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi"
    sql = 'INSERT INTO gene (gene_id) VALUES(%s);'

    step = 10000
    item = 0
    try_times = 3
    while item < 71786370:
        logging.info('item=%s' % item)
        while try_times > 0:
            url = f'{rooturl}?db=gene&term="all"[filter]&retstart={item}&retmax={step}&retmode=json&sort=name&usehistory=y&email={email}&api_key={apk_key}'
            logging.debug(url)
            rsp = req.get(url)
            if rsp.status_code == 200:
                logging.info('call success')
                id_lst = rsp.json().get('esearchresult', {}).get('idlist', [])
                id_lst = [(int(i),) for i in id_lst]
                update_db(sql, id_lst)
                break
            else:
                logging.warning('call %s failed, rsp=%s' % (url, rsp.text))
                time.sleep(1)
                try_times -= 1
        else:
            logging.error('retstart= %s failed' % item)
        item += step

if __name__ == '__main__':
    get_ids()

标签:__,logging,item,url,self,db,postgre,插入,数据
From: https://blog.51cto.com/u_12890843/8257181

相关文章

  • 神策数据桑文锋:企业数字化客户经营落地,客户旅程编排是关键
    “数据为基、旅程引领,开启数字化经营新时代。”在神策2023数据驱动大会现场,神策数据创始人&CEO桑文锋围绕该主题展开分享。一、八年迭代,神策数据经营理念持续升级桑文锋基于对商业模式的思考,总结了企业面临的三个主要任务——价值创造、客户经营和效率提升。他表示,当前企业在......
  • 【云栖2023】林伟:大数据AI一体化的解读
    本文根据2023云栖大会演讲实录整理而成,演讲信息如下:演讲人:林伟|阿里云研究员,阿里云计算平台事业部首席架构师,阿里云人工智能平台PAI和大数据开发治理平台DataWorks负责人演讲主题:大数据AI一体化的解读今年是AI大爆发的一年,大语言模型的诞生推动了席卷整个行业的大模型热潮,许多人......
  • YAML和TOML都支持多种数据类型
    YAML和TOML都支持多种数据类型,但它们在某些方面有所不同¹⁴。**YAML**支持的数据类型包括¹:-对象:键值对的集合,又称为映射(mapping)/哈希(hashes)/字典(dictionary)-数组:一组按次序排列的值,又称为序列(sequence)/列表(list)-纯量(scalars):单个的、不可再分的值-字符串-布尔值-......
  • 为什么要用数据中台
     数据中台的出现是为了应对企业数据整合、标准化管理以及提高企业高效稳定处理数据而应用而生的。在如今大数据时代,数据成为了企业的核心战略,能给企业带来极大的商业价值与竞争优势。所以数据中台的作用也就凸显。数聚就从数据中台对企业巨大的作用开始阐述,为什么企业要用数据中......
  • 软件测试|MySQL DISTINCT关键字过滤重复数据
    简介在MySQL中,有时候我们需要从表中检索唯一的、不重复的数据。这时,我们可以使用DISTINCT关键字来过滤掉重复的数据行。在本文中,我们将深入探讨MySQL中DISTINCT的用法以及如何在查询中使用它来得到不重复的结果集。基本语法DISTINCT关键字用于在SELECT语句中指示查询结果中去......
  • C# 如何连接 PostgreSQL 基础教程
    1.准备1.安装PostgreSQL数据库服务器2.安装Npgsql驱动程序,每一个解决方案都要提前添加3.C#开发环境:VisualStudio2.连接PostgreSQL的步骤2.1:导入必要的命名空间usingNpgsql;2.2:创建连接字符串stringconnString="Host=localhost;Port=5432;Username=po......
  • postgresql批量修改表的owner
    postgresql批量修改表的ownerpostgresql中,对表的权限控制比较严格,很多事情只有owner才有权限去做。所以我们尽量用onwer账户去操作。但是有的时候我们需求去批量修改owner,比如导入的表结构。但是官方并没有提供比较好的命令。我们可以用拼接sql的方式去完成这个命令。1.查看有......
  • 流式数据库引擎备受关注,亚信安慧AntDB数据库受邀参加“2023中国PostgreSQL数据库生态
    11月3日至5日,2023中国PostgreSQL数据库生态大会在北京中科院软件所大报告厅盛大召开,大会现场百余位专家学者、企业、用户代表及线上数千位观众,就近年来国产数据库技术与市场变革进行深入探讨。湖南亚信安慧科技有限公司(简称:亚信安慧)受邀参与主论坛发表了重要演讲,并荣膺“2023最佳......
  • 应急电源车:车载UPS系统如何进行数据采集远程监控
    随着电力需求的日益增长,不仅需要大规模的电厂来满足日常生产、生活的需要,而且还要在重要场所、灾害现场等环境中,随时准备备用电源来更好地面对突发状况,应急电源车便是这一类型的特种车辆。 UPS应急电源车是一种搭载UPS系统的特种车辆,能够为特殊场合提供稳定、可靠、不间断电源,一般......
  • TSINGSEE智能分析网关V4车辆结构化数据检测算法及车辆布控
    车辆结构化视频AI检测技术,可通过AI识别对视频图像中划定区域内的出现的车辆进行检测、抓拍和识别,系统通过视频采集设备获取车辆特征信息,经过预处理之后,接入AI识别算法并与车辆底库进行对比,快速识别车辆身份和属性。TSINGSEE青犀AI智能分析网关V4在车辆的智能监管上,也具备十分灵活......