更新语句在python中不起作用?

时间:2015-11-11 14:00:53

标签: python oracle jdbc

我编写了一个简单的python程序,它成功地获取了数据表单数据库。但无法更新数据库中的表。 执行更新语句时,它会卡住,没有任何事情发生,没有任何异常。

我的代码如下。知道为什么会这样吗?

from java.sql import DriverManager

    def updateDB():

        url = "jdbc:oracle:thin:@192.1.1.1:1521:auid"
        uname = "dbtstj1"
        pword = "dbtstj321"

        conn = None
        stmt = None

        try:
            conn = DriverManager.getConnection(url,uname,pword)
            stmt = conn.createStatement()

            rs = stmt.executeQuery("select PKG_NAME from PkgData")
            while rs.next():
                print rs.getString(1)

            pkgName = "'Test Pkg Name'"
            pkgID = "'T1234'"

            updateQuary = "UPDATE PkgData SET PKG_NAME =%s WHERE PKG_ID =%s" %(pkgName, pkgID)

            stmt.execute(updateQuary)

        except Exception , e:
            print 'Error:', e[0]

        finally:
            if stmt is not None:
                stmt.close()
            if conn is not None:
                conn.close()

    updateDB()

2 个答案:

答案 0 :(得分:1)

您需要将更改提交到数据库:

stmt.execute(updateQuary)
conn.commit()

答案 1 :(得分:0)

当查询请求数据类型和所需数据类型不同时,可能会发生这类问题。 似乎与数据库的数据类型和您的查询不匹配。您可以使用查询重新检查数据库的数据类型吗? 对于Ex:PKG_ID =%s可以是数据库中的另一种数据类型,如数字等等......