2015-11-11 3 views
0

Я написал простую программу python, которая успешно получает базу данных данных. но не удалось обновить таблицу в БД. При выполнении инструкции обновления она застревает, и ничего не происходит, никаких исключений.Оператор обновления не работает в python?

Мой код выглядит следующим образом. Любая идея whyis это?

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() 

ответ

0

Такого рода вопросы могут быть случается, когда запрос запрос типа данных и требуется тип данных разница. Кажется, что существует несоответствие с типом данных базы данных и вашим запросом. Можете ли вы перепроверить с типом данных базы данных с вашим запросом. Для примера: PKG_ID =% s может быть другим типом данных в базе данных в виде цифр или т. Д.

+0

да, это была моя ошибка. которые разрешают проблему. теперь он работает ... Спасибо ...: D – Dush

1

вы должны зафиксировать изменения в базе данных:

stmt.execute(updateQuary) 
conn.commit() 
+0

мы не можем идти дальше в разделе «stmt.execute (updateQuary)». Он застревает в этой строке и не содержит никаких исключений. – Dush

Смежные вопросы