首页 > 解决方案 > 使用 pandas 进行 Postgres 查询 - 添加显式类型转换

问题描述

我正在尝试通过 pandas 连接查询 postgres 数据库,将查询作为字符串传递,如下所示:

import pandas.io.sql as psql
from sqlalchemy import create_engine

engine = create_engine('postgresql://username:password@localhost:5432/FAPESP-Covid19')

PacientesStat = psql.read_sql("SELECT CD_Municipio, Min(2021-aa_nasc), Max(2021-aa_nasc), Count(*) Tot\
    FROM Pacientes\
    GROUP BY 1\
    ORDER BY 1 NULLS FIRST;", engine)

但我得到了错误:

LINE 1: SELECT CD_Municipio, Min(2021-aa_nasc), Max(2021-aa_nasc), C...
                                     ^
HINT:  No operator matches the given name and argument types. You might need to add explicit type casts.

我看到 aa_nasc 列设置为 CHAR。

我如何在这里修复类型?

标签: pandaspostgresql

解决方案


以下工作:

UPDATE pacientes SET aa_nasc = NULL WHERE aa_nasc = 'AAAA' OR aa_nasc = 'YYYY';
ALTER TABLE pacientes ALTER COLUMN aa_nasc TYPE INT USING aa_nasc::integer;

推荐阅读