如何解决我的PostgreSQL更新查询中的运算符不存在错误?

时间:2018-08-04 09:20:05

标签: postgresql sql-update

我正在尝试从Python脚本更新postgresql db中的表,但在下面的行中出现错误-

update_query='update product_'+lang+' set "StockQuantity"='+str(item[1].StockQuantity )+' where "ProductId"='+str(item[1].ProductId)

错误:

sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) operator does not exist: character varying = integer
LINE 1: ... product_fr set "StockQuantity"=700 where "ProductId"=367945
                                                            ^
HINT:  No operator matches the given name and argument type(s). You 
might need to add explicit type casts.
[SQL: 'update product_fr set "StockQuantity"=700 where 
"ProductId"=367945'] (Background on this error at: 
 http://sqlalche.me/e/f405)

我认为问题出在更新查询中我的ProductId值;我将其转换为字符串,但无法正常工作。

有人可以帮助我解决这个问题吗?

在PostgreSQL中运行示例查询:

查询不正常-

update public.product_fr set "StockQuantity"=1900 where "ProductId"=367945

工作查询-

update public.product_fr set "StockQuantity"=1900 where "ProductId"='367945'

1 个答案:

答案 0 :(得分:0)

您的ProductId可能是文本类型,因此您需要将数字用引号引起来,因此它也是文本类型。

update_query='update product_'+lang
  +' set "StockQuantity"='+str(item[1].StockQuantity )
  +' where "ProductId"=\''
  +str(item[1].ProductId) + '\''