我正在尝试将价格导入到销售/销售的列中。这就是我在python脚本中的内容:
arg = {
'sold': row[4].strip(),
'sales': row[6].strip(),
}
cur.execute(
"""INSERT INTO
"sales"("sold","price","sales")
select %(sold)s,
float(%(sales)s)/float(%(sold)s),
%(sales)s,
;""", arg)
运行脚本时出现此错误:
psycopg2.ProgrammingError: syntax error at or near "'18'"
LINE 10: float('18')/float('3'),
如何转换为float?另外,将除法设置为0到0的最简单方法是什么?
答案 0 :(得分:1)
将参数转换为数字,否则psycopg2会将它们呈现为字符串
arg = {
'sold': int(row[4]),
'sales': float(row[6])
}
由于它们将被转换为数字,因此无需strip()
要将0除以0,请使用case
子句:
cur.execute("""
insert into sales (sold, price, sales)
select
%(sold)s,
case
when %(sold)s = 0 then 0
else %(sales)s / %(sold)s
end,
%(sales)s,
;""", arg
)