Я пытаюсь подключиться к базе данных снежинок, но перед назначением указывается локальная переменная «курсор». Я что-то упускаю в коде?

Вот скриншот ошибки:

enter image description here

А вот мой код:

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))
0
JKAK 9 Ноя 2020 в 10:05

2 ответа

Лучший ответ

Основная причина этой проблемы - конечная точка, где мне не нужно указывать доменное имя для базы данных снежинок. Но в основном коде я пропустил доменное имя, и Snowflake также попытается добавить доменное имя для конечной точки. Эта проблема решена. Спасибо всем за ваши ценные предложения.

1
Julie_kennedy 11 Ноя 2020 в 09:18

Насколько я знаю, класс подключения не имеет элемента курсора

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))

Попробуй это

0
kiki7000 9 Ноя 2020 в 07:12