python - 使用 cx_oracle 从 Oracle 10 的队列中出列消息
问题描述
我设置了一个名为“ORGS_QUEUE”的队列,当将记录插入表中时,使用触发器将消息排入队列。触发器工作正常,当我可以使用 sql 成功地将消息出列时。
现在我正在尝试使用 cx_Oracle 执行此操作,并且我正在使用以下代码:
def dequeue_data():
TYPE_NAME = "MESSAGE_TYPE"
QUEUE_NAME = "ORGS_QUEUE"
connection = cx_Oracle.connect("TEST", '123', "localhost/xe")
queue_type = connection.gettype(TYPE_NAME)
queue = connection.queue(QUEUE_NAME, queue_type)
queue.deqOptions.wait = cx_Oracle.DEQ_NO_WAIT
queue.deqOptions.visibility = cx_Oracle.DEQ_IMMEDIATE
msg = queue.deqOne()
connection.commit()
xref, data = msg.payload.XREF, msg.payload.REC_DATA
print xref, data
在运行此代码时,我得到错误回溯:
Traceback (most recent call last):
File "/home/user/dequeue_test.py", line 31, in <module>
dequeue_data()
File "/home/user/dequeue_test.py", line 13, in dequeue_data
msg = queue.deqOne()
cx_Oracle.OperationalError: ORA-03113: end-of-file on communication channel
Process ID: 0
Session ID: 24 Serial number: 49
我在这里做错了什么?
解决方案
推荐阅读
- bash - 由于非法选项 -o pipefail 导致 cocotb-modelsim 错误
- java - 无法解析方法,也无法解析符号
- html - 单击小屏幕后导航栏切换不显示图标
- ios - 在静态 UITableView 中动态替换单元格
- java - Java如何覆盖通用V的比较
- joomla - JOOMLA 3.x if 检查后如何隐藏模板
- javascript - 可以加载返回数据的 webpack 模块,还是只加载执行语句的模块?
- python - 逐字阅读列表,只阅读最后一个
- python - 用 BS4 vs Preset Data 问题腌制一个刮掉的列表(为什么它不一样?)
- python - 如何从一维列表或数组初始化子列表的子列表列表?