python oracle insert datatype mismatch

时间:2015-09-23 21:59:12

标签: python oracle dictionary

我正在尝试将字典插入到Oracle表中,并且数据不匹配错误导致其失败。我想知道我使用的语法是否正确。

In [19]:selrow
Out[19]:[{'CUSTOMER_NM': 'ABC INC',
  'CUSTOMER_NO': 'A0050129',
  'CUSTOMER_SK': 926,
  'EFFECTIVE_DT': datetime.datetime(2015, 10, 2, 0, 0)}]

这是我的插入声明:

In [30]:cur=db.cursor()
cur.execute('INSERT INTO DIM_CUST (%s) VALUES (%s)', (selrow[0].keys(),               selrow[0].values()))
db.commit()

我收到以下错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-30-eefac6fb0aa7> in <module>()
      2 #query = 'INSERT INTO DIM_CUST (%s) VALUES (%s)', (selrow[0].keys(), selrow[0].values())
      3 #rint query
----> 4 cur.execute('INSERT INTO DIM_CUST (%s) VALUES (%s)', (selrow[0].keys(), selrow[0].values()))
      5 db.commit()

TypeError: expecting numeric data

我的插入语法是否正确?我使用字典键作为列名和字典值作为要输入表中的值。

PL。询问我可能遗漏的任何细节。感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

谢谢Lucas&amp; haraprasadj。根据你的指示,我提出了这个:

cols = ', '.join(selrow[0].keys())
vals = ':'+', :'.join(selrow[0].keys())
sql='INSERT INTO DIM_CUST (%s) VALUES (%s)' % (cols, vals)
cur.execute(sql, selrow[0])
db.commit()

有效!请提供帮助。