You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python的psycopg2修改DECIMAL字段精度报语法错误如何解决?

报错原因

你使用的是PostgreSQL数据库(psycopg2为PostgreSQL官方Python驱动),其ALTER TABLE ALTER COLUMN修改字段类型的语法要求,指定新数据类型前必须添加TYPE关键字,你的原SQL语句缺失该关键字,因此触发语法错误,和使用NUMERIC还是DECIMAL无关。

修复代码

将SQL语句调整为如下形式即可正常执行:

query = """ALTER TABLE table_name ALTER COLUMN column_name TYPE NUMERIC (22,6);"""

self.cursor.execute(query)
self.connection.commit()
补充注意事项
  • 替换NUMERIC为DECIMAL也可正常运行,PostgreSQL中NUMERIC和DECIMAL语义完全等价
  • 如果原字段存储的数据存在无法隐式转换为NUMERIC(22,6)的内容,会触发数据转换报错,此时可添加USING子句手动指定转换逻辑,比如原字段为字符串类型时写法为:
    ALTER TABLE table_name ALTER COLUMN column_name TYPE NUMERIC (22,6) USING column_name::NUMERIC(22,6);
    

内容的提问来源于stack exchange,提问作者Elvin Jafarov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:15:03