插入变量INSERT命令Oracle使用Python

时间:2016-11-01 04:20:08

标签: python oracle

我在Oracle DB中有一个表,我试图使用python脚本插入多行。

该表接受以下指定了数据类型的字段 列 - 数据类型

TAG - NUMBER(38,0)
TAG_ID - NUMBER(38,0)
TAG_STATUS - NUMBER(38,0)
GROUP_ID - NUMBER(38,0)
LIC_PLATE - VARCHAR(20 BYTE)
LIC_PLATE_ID - CHAR(2 BYTE)

我正在使用的SQL查询,

q = ("INSERT INTO TABLE (TAG, TAG_ID, TAG_STATUS_ID, GROUP_ID, LIC_PLATE, LIC_PLATE_ID) VALUES (var1, var2, var3, var4, var5, var6)")

其中var1到var6,我正在读取csv文件。对于例如csv文件中的一行给了我

var1 = '11011'
var2 = 25
var3 = 1
var4 = 66
var5 = 'BSB261'
var6 = 'IN'

当我尝试使用上述信息执行时,它显然会失败

cursor.execute(q)
conn.commit()
cursor.close()
conn.close()

我已经查看了executemany()和其他示例,但我认为我无法获得表所需的正确格式

请注意以下查询可以正常使用硬编码的值

q = ("INSERT INTO TABLE (TAG, TAG_ID, TAG_STATUS_ID, GROUP_ID, LIC_PLATE, LIC_PLATE_ID) VALUES (11011, 25, 1, 66, 'BSB261', 'IN')")

感谢任何帮助 感谢

1 个答案:

答案 0 :(得分:0)

找出一种方法来做这个,所以写我自己的答案(可能有更好的方法来做到这一点,所以随时添加评论改进)

q = "INSERT INTO TABLE (TAG, TAG_ID, TAG_STATUS_ID, GROUP_ID, LIC_PLATE, LIC_PLATE_ID) VALUES(:TAG, :TAG_ID, :TAG_STATUS_ID, :GROUP_ID, :LIC_PLATE, :LIC_PLATE_ID)"

然后做:

curs.execute(q, TAG=var1, TAG_ID=var2, TAG_STATUS_ID=var3, GROUP_ID=var4, LIC_PLATE=var5, LIC_PLATE_ID=var6)