导入postgres时如何进行列分割(python脚本)?

时间:2014-07-18 17:40:06

标签: python postgresql psycopg2

我正在尝试将价格导入到销售/销售的列中。这就是我在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的最简单方法是什么?

1 个答案:

答案 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
)