#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!