Как отметили другие в комментариях , чтобы получить максимальную эффективность, особенно при постоянной загрузке, загрузите ваши отформатированные файлы данных непосредственно в Snowflake вместо использования INSERT
операторов в качестве лучшей практики.
Однако код в описании также может быть улучшен, чтобы минимизировать накладные расходы, создаваемые для каждой вставленной строки. Несколько ключевых наблюдений:
Модифицированная версия кода:
from module import usr, pwd, acct, db, schem, api_key
import snowflake.connector
import datetime
end_point = 'users'
MYDB = None
def snowflake_connect():
if MYDB is None:
MYDB = snowflake.connector.connect(
user=usr,
password=pwd,
account=acct,
database=db,
schema=schem,
)
def snowflake_insert_all(rows):
snowflake_connect()
cursor = MYDB.cursor()
sql_insert_query = "INSERT INTO USERS(ID, ACTIVATED, NAME) VALUES (?, ?, ?)"
cursor.executemany(sql_insert_query, rows)
return cursor
def get_users():
url = 'https://company.pipedrive.com/v1/{}?&api_token={}'.format(end_point,api_key)
response = requests.request("GET", url).json()
read_users(response)
def read_users(response):
#
all_data = [(data['id'], data['activated'], data['name']) for data in response['data']]
snowflake_insert_all(all_data)
if __name__ == "__main__":
snowflake_truncate()
get_users()
if MYDB is not None:
MYDB.close()
Примечание : я сосредоточился только на улучшении частей взаимодействия Snowflake и DB-API, но в целом есть и другие ошибки (переменная и именование методов, ненужное использование глобальных переменных, обработка ресурсов и т. д. c.) в том, как написан этот скрипт, который может использовать справку из Code Review , если вы хотите улучшить свою программу дальше.