Функция SQLAlchemy.convert не может адаптировать тип «Проходимый тип»

#python #postgresql #sqlalchemy #dask

Вопрос:

Я пытаюсь преобразовать столбец Varchar в Int или BigInt с помощью SQLAlchemy.func.convert() и создать столбец индекса.

Это и есть код:

 def read(self):
    index_col = self.source["index_col"]
    index_col = func.convert(sqlalchemy.BigInteger, sql.column(index_col)).label("id")
    data = dask.dataframe.read_sql_table(self.source["table_name"],
                                         self.get_source_uri(),
                                         index_col=index_col)
    return data
 

Но я получаю эту ошибку:

 ERROR:root:(psycopg2.ProgrammingError) can't adapt type 'TraversibleType'
[SQL: SELECT test.dni, test.date, test.locality, test.height, test.weight, test.y, convert(%(convert_1)s, dni) AS id 
FROM test 
 LIMIT %(param_1)s]
[parameters: {'convert_1': <class 'sqlalchemy.sql.sqltypes.BigInteger'>, 'param_1': 5}]
(Background on this error at: http://sqlalche.me/e/14/f405)
 

Использование divisions аргумента в dask.dataframe.read_sql_table() Нем для меня не вариант, так как я не знаю, какие данные я получу.

Есть ли способ преобразовать строку в int?

Если это невозможно, как я могу создать столбец с числами для использования в качестве индекса?

Спасибо.

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

1. func является прокси-сервером для собственных функций базы данных. Поэтому вам нужно указать тип базы данных, а не тип SQLAlchemg!