Python cx_oracle变量

时间:2016-07-20 15:46:41

标签: python database oracle variables cx-oracle

try:
for row in data:
    id = row[0]
    name= row[1]
    b.execute("INSERT INTO NAME (NUMBER, NAME, ID) VALUES (1, %s, %s)" %(name, id))
    conn.commit()
except: #rest code

我无法向数据库添加值(据我所知,因为名称变量),我总是收到此错误: ORA-00936:缺少表达式。我的代码有什么问题?我该如何正确指定参数?

1 个答案:

答案 0 :(得分:1)

请改用绑定变量。不要使用%s并将参数直接放在字符串中,因为这会导致可能的SQL注入,更不用说引用问题了。这种方法允许传递任何合法价值,而不必担心这些事情!

try:
    for row in data:
        id = row[0]
        name= row[1]
        b.execute("INSERT INTO NAME (NUMBER, NAME, ID) VALUES (1, :1, :2)",
                (name, id))
    conn.commit()
except:
    # rest code