Я смотрел похожие вопросы, но пока ничего не помогло
Итак, вот оно. Я хочу обновить свою таблицу с помощью сценария python. Использую модуль cx_ oracle. Я могу выполнить запрос SELECT, но всякий раз, когда я пытаюсь выполнить запрос UPDATE, моя программа просто зависает (зависает). Я понимаю, что мне нужно использовать cursor.commit () после cursor.execute (), если я обновляю таблицу, но мой код никогда не проходит мимо cursor.commit (). Я добавил ниже фрагмент кода, который использую для отладки.
Любые предложения ??
Код
import cx_Oracle
def getConnection():
ip = '127.0.0.1'
port = 1521
service_name = 'ORCLCDB.localdomain'
username = 'username'
password = 'password'
dsn = cx_Oracle.makedsn(ip, port, service_name=service_name) # (CONNECT_DATA=(SERVICE_NAME=ORCLCDB.localdomain)))
return cx_Oracle.connect(username, password, dsn) # connection
def debugging():
con = getConnection()
print(con)
cur = con.cursor()
print('Updating')
cur.execute('UPDATE EMPLOYEE SET LATITUDE = 53.540943 WHERE EMPLOYEEID = 1')
print('committing')
con.commit()
con.close()
print('done')
debugging()
** Вот соответствующий результат: **
<cx_Oracle.Connection to username@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCLCDB.localdomain)))>
Updating
Решение
Немного покопавшись, я обнаружил основную причину! Я внес изменения в таблицу с помощью Oracle SQL Developer, но не зафиксировал их, когда сценарий python пытался внести изменения в таблицу, он зависал из-за этого. Чтобы избежать зависания, я зафиксировал свои изменения в oracle sql разработчике перед запуском сценария python, и он работал нормально!