python - psycopg2 - 如何始终将非字符串值转换为字符串

标签 python psycopg2

psycopg2 的文档有关于如何将特定类型转换为不同类型的说明:

Psycopg converts decimal/numeric database types into Python Decimal objects. Can I have float instead?
You can register a customized adapter for PostgreSQL decimal type:

    DEC2FLOAT = psycopg2.extensions.new_type(
        psycopg2.extensions.DECIMAL.values,
        'DEC2FLOAT',
        lambda value, curs: float(value) if value is not None else None)
    psycopg2.extensions.register_type(DEC2FLOAT)

但是我的数据将混合有 str、float、integer、decimal、date 类型等。我如何告诉 psycopg2 将任何非字符串值转换为字符串?我不想每次遇到新类型时都注册自定义适配器,因为我的查询可能会发生变化。
我希望我能把情况说得足够清楚。 提前致谢。

最佳答案

您可以删除所有类型转换程序并接收 postgres 字符串表示形式中的所有内容:

import psycopg2

for k in psycopg2.extensions.string_types.keys():
    del psycopg2.extensions.string_types[k]

cnn = psycopg2.connect('')
cur = cnn.cursor()
cur.execute("select 1::int, now()::timestamp, 'hello'::text")
cur.fetchone()
('1', '2011-12-19 16:50:11.396855', 'hello')

关于python - psycopg2 - 如何始终将非字符串值转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8538413/

相关文章:

python - 在 python 中实现 T9 字典时输出错误

python - 从 HDF5 迁移到 PostgreSQL

python - 如果图像具有 (28,28,3) 形状,我如何将其转换为 (28.28,1)?

python - 如何设置 Visual Studio Code Python Extension 的根目录?

python - 如何获取第二级长度可变的 MultiIndex DataFrame 中第二级的所有最后一行

python - 这些 Python 函数没有预期的运行时间

python - 从表中删除所有数据,但最后 N 个条目

python - psycopg2 标识符中的模式名称

python - 如何创建使用上下文管理器的 postgres 连接?

python - psycopg2 查询参数类型