我想通过销售美元/销售单位(如果销售单位为0,则为0)插入产品的价格到postgres sql中。是否可以在插入数据库时执行此操作或者是否必须运行更新? (见下文)
arg = {
'sales_dollars': row[8].strip()
'sales_units': row[9].strip()
'average_on_hand_dollars': row[11].strip()
'average_on_hand': row[12].strip() }
cur.execute(
"""INSERT INTO
"Sales_Inventory"("sales_dollars","sales_units", "price", "average_on_hand_dollars","average_on_hand", "cost")
select
%(sales_dollars)s,
%(sales_units)s,
#price = sales_dolars/sales_unit should go here
%(average_on_hand_dollars)s,
%(average_on_hand)s
#cost = average_on_hand_dollars/average_on_hand should go here
;""", arg)
提前谢谢
答案 0 :(得分:0)
只需添加另一个键值对:
arg['price'] = arg['sales_dollars']/arg['sales_units']
cur.execute( # ...
%(price)s
# ...
当然,你的价值观是字符串,而不是数字,所以/
不会给你带来太多好处。但这很容易解决:转换为数字,除以,然后可选地转换回字符串:
arg['price'] = float(arg['sales_dollars'])/float(arg['sales_units'])
答案 1 :(得分:0)
最好的方法是:
if not arg["sales_dollars"]:
arg["sales_dollars"] == 0
...在你的python中。如果由于某种原因这是不可行的,PostgreSQL可以通过COALESCE来解决这个问题:
COALESCE(%{sales_dollars}s, 0)
...可以在你放置字段的地方插入。