我正在尝试从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'
答案 0 :(得分:0)
您的ProductId可能是文本类型,因此您需要将数字用引号引起来,因此它也是文本类型。
update_query='update product_'+lang
+' set "StockQuantity"='+str(item[1].StockQuantity )
+' where "ProductId"=\''
+str(item[1].ProductId) + '\''