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