如何在使用python脚本导入postgres之前分割csv文件中的单元格?

2024-06-17 12:11:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我想通过在postgressql中输入sales dollars/sales units(如果sales unit为0,则为0)来插入产品的价格。我是否可以在插入数据库时执行此操作,或者必须运行更新((见下文)

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)

先谢谢你


Tags: gohereonargunitpricerowstrip
2条回答

最好的方法是:

if not arg["sales_dollars"]:
   arg["sales_dollars"] == 0

。。。在你的Python里。如果出于某种原因这是不可行的,PostgreSQL可以通过合并来处理这个问题:

COALESCE(%{sales_dollars}s, 0)

。。。可以插入一个字段

只需添加另一个键值对:

arg['price'] = arg['sales_dollars']/arg['sales_units']

cur.execute( # ...
                %(price)s
             # ...

当然,您的值是字符串,而不是数字,因此/对您没有什么好处。但这很容易解决:转换成数字,除法,然后有选择地转换回字符串:

arg['price'] = float(arg['sales_dollars'])/float(arg['sales_units'])

相关问题 更多 >