如何从列表中插入字符串值作为 Postgre table 中的日期字段,在 python 中

How to insert string values from a list as date field in Postgre table , in python

在 ipython 中,下面是我试图执行的插入语句,它 returns error:not 在字符串格式化期间转换了所有参数。请注意 order_Date 和 ship_date 是 SALES_ORDER postgre table 中的日期字段。将 %s 用于日期字段值是否正确?如果不是,如何传递正确的格式。

 `''
  order_table_insert = ("""INSERT INTO SALES_ORDER(
                     Order_ID ,
                     Customer_ID,
                     Order_Date ,
                     Ship_Date ,
                     Ship_Mode ,
                     Quantity  ) VALUES(%s,%s,%s,%s,%s)""")
  for i, row in sales_order.iterrows():
      cur.execute(order_table_insert,list(row))'
'''

注意:行列表包含以下输出:

'
打印(列表(行)

  ['CA-2017-152156', 'CG-12520', '08-11-2017', '11-11-2017', 'Second Class', 2]
  ['CA-2017-152156', 'CG-12520', '08-11-2017', '11-11-2017', 'Second Class', 3]
  ['CA-2017-138688', 'DV-13045', '12-06-2017', '16-06-2017', 'Second Class', 2]
  ['US-2016-108966', 'SO-20335', '11-10-2016', '18-10-2016', 'Standard Class', 5]

'

你可以使用-

TO_DATE("11-11-2017",  "DD-MM-YYYY") 

将解析字符串并从第二个参数中选择格式。

因此,您的查询将是 -

INSERT INTO SALES_ORDER(Order_ID , Customer_ID, Order_Date, Ship_Date, Ship_Mode , Quantity  ) VALUES(%s, TO_DATE(%s, "DD-MM-YYYY"), TO_DATE(%s, "DD-MM-YYYY"),%s,%s)