Ошибка при добавлении application_name в качестве параметра в dask.read_sql_table

#python #sqlalchemy #psycopg2 #dask

#python #sqlalchemy #psycopg2 #dask

Вопрос:

Я пытаюсь создать фрейм данных dask из таблицы в postgres. Я хотел бы передать application_name = ‘myapp’ в качестве стандарта для мониторинга и отслеживания активности БД.

Но когда я пытаюсь добавить параметр, я получаю ошибку ниже.

 ddf = dd.read_sql_table('table', 
                        uri, 
                        schema='schema', 
                        index_col='index_col', 
                        engine_kwargs={'application_name':'myapp'})
  

Ошибка типа: недопустимые аргументы ‘application_name’, отправленные в
create_engine() с использованием конфигурации
PGDialect_psycopg2/QueuePool/Engine . Пожалуйста, убедитесь, что аргументы ключевого
слова подходят для этой комбинации компонентов.

Комментарии:

1. Для какой функции является application_name допустимым вводом, куда вы ожидаете, что это пойдет?

2. Я ожидаю, что SQLAlchemy будет использовать его при создании движка.

3. Исключение предполагает create_engine() , что это ключевое слово не требуется. Можете ли вы создать движок sqalchemy самостоятельно?

4. Я сослался на: проблема и обновленный код как engine_kwargs={‘connect_args’: {‘application_name’:’myapp’}. Теперь он работает

Ответ №1:

Оказывается, правильный синтаксис был

 ddf = dd.read_sql_table('table', 
                        uri, 
                        schema='schema', 
                        index_col='index_col', 
                        engine_kwargs={'connect_args': {'application_name': 'myapp'})
  

поскольку вызов для создания механизма sqlalchemy выглядит так

 engine = create_engine(uri, connect_kwargs={'application_name':' myapp'})
  

Комментарии:

1. engine = create_engine(uri, connect_args={‘application_name’:’myapp’}) connect_kwargs в приведенном выше ответе не работает.

Ответ №2:

  • База данных PostgreSQL :

Следующее работает в sqlalchemy==1.3.10

     # Establish database connection via sqlalchemy

    sqlalchemy_connection_kwargs = {'connect_args': {'application_name': 'herles_application'}}

    connection = create_engine(sqlalchemy_connection_string, **sqlalchemy_connection_kwargs)
  

Если вы используете psycopg2-binary==2.8.4 собственное соединение

 native_connection = psycopg2.connect(user=cred['username'],
                                     password=cred['password'],
                                     host=cred['host'],
                                     port=cred['port'],
                                     database=cred['databaseName'],
                                     application_name="herles_application")