我正在尝试将字典插入到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。询问我可能遗漏的任何细节。感谢您提供的任何帮助。
答案 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()
有效!请提供帮助。