#python-3.x #google-cloud-functions #snowflake-cloud-data-platform
#python-3.x #google-cloud-функции #snowflake-cloud-data-platform
Вопрос:
Я пытаюсь подключиться к базе данных snowflake, но там указано, что локальная переменная ‘cursor’, на которую ссылаются перед назначением. Я что-то упустил в коде?
Вот скриншот ошибки:
И вот мой код:
def Source_database(self, source):
try:
print('######################################Cursor creation on database#################################')
if source['systemType'] == 'mysql':
'''block of code'''
exception:
print("")
elif source['systemType'] == 'snowflake':
try:
snowflake_connection = None
source_db_name = 'xxx'
source_db_username = 'xxx'
source_db_password = 'xxx'
source_db_port = 'xx'
source_db_endpoint = 'xxx'
source_db_warehouse = 'xx'
schema_name = 'xx'
with closing(sf.connect()) as conn:
with closing(conn.cursor()) as cursor:
snowflake_connection = sf.connect(user=source_db_username,password=source_db_password,
warehouse=source_db_warehouse, database=source_db_name,schema=schema_name,
account= source_db_endpoint)
print('Success')
#cursor = snowflake_connection.cursor()
self.engine = snowflake_connection
print("Snowflake Cursor created Successfully")
except Exception as e:
print("Snowflake Cursor is not built please check the connection details {}".format(e))
Комментарии:
1. Добро пожаловать в SO. Пожалуйста, опубликуйте полную обратную трассировку.
2. Где инициализируется ваша
sf
переменная? Я не вижу, где это происходит.3. @SimonD Спасибо за ваш комментарий. Я решил эту проблему. Основной причиной этой проблемы является конечная точка, где мне не нужно указывать имя домена, но в основном коде я передал имя домена. Snowflake добавит доменное имя для конечной точки.
Ответ №1:
Основной причиной этой проблемы является конечная точка, где мне не нужно указывать доменное имя для базы данных snowflake. Но в основном коде я передал доменное имя, и Snowflake также попытается добавить доменное имя для конечной точки. Эта проблема решена. Спасибо всем за ваши ценные предложения.
Ответ №2:
Насколько я знаю, класс connection не имеет элемента cursor
elif source['systemType'] == 'snowflake':
try:
snowflake_connection = None
source_db_name = 'xxx'
source_db_username = 'xxx'
source_db_password = 'xxx'
source_db_port = 'xx'
source_db_endpoint = 'xxx'
source_db_warehouse = 'xx'
schema_name = 'xx'
with closing(sf.connect()) as conn:
with closing(sf.cursor()) as cursor:
snowflake_connection = sf.connect(user=source_db_username,password=source_db_password,
warehouse=source_db_warehouse, database=source_db_name,schema=schema_name,
account= source_db_endpoint)
print('Success')
#cursor = snowflake_connection.cursor()
self.engine = snowflake_connection
print("Snowflake Cursor created Successfully")
except Exception as e:
print("Snowflake Cursor is not built please check the connection details {}".format(e))
Попробуйте это
Комментарии:
1. Пытаясь выполнить приведенный выше код, я получаю сообщение об ошибке: «Выполнение функции заняло 60004 мс, завершено со статусом: ‘тайм-аут’
2. Что это за функция. Можете ли вы включить ее в свой код?