我有一项任务是使用cx_Oracle为两个进程创建持久连接。
需要从第一个进程执行一些请求,而在同一个事务中执行第二个进程的某些请求。
尝试按照
中的描述使用DRCPhttp://www.oracle.com/technetwork/articles/dsl/python-091105.html
下一个代码:
<li class="instagram">
<a target="_blank" href="<?php echo Yii::$app->config->getConstSite("LINK_PAGE_INSTAGRAM"); ?>">
<i class="icon-instagram"></i>
<?php if (!empty($followers_in)): ?>
<span class="quan"><?= number_format($followers_in["user"]["followed_by"]["count"]) ?></span>
<?php endif; ?>
<span>Followers</span>
</a>
</li>
</ul>
</div>
但第三个断言不正确。 可能是我使用了不正确的参数?
连接池可以由单独的进程创建,该进程将存储连接并通过套接字与其他进程通信(可能与在sqlrelay中一样)。也许这样的工具也存在,但我找不到它。 (要求它应该是小而简单和开放)。你知道其中的一些吗?
在@Dmitry的帮助下,http://www.dba-oracle.com/t_packages_dbms_xa.htm创建了使用dbms_xa的工作示例:
#coding: utf-8
import cx_Oracle
con1 = cx_Oracle.connect('user/pass:127.0.0.1:1521/XE:POOLED', cclass='test', purity=cx_Oracle.ATTR_PURITY_NEW)
cur = con1.cursor()
cur.execute('''insert into gui_view (id, name, view_type, title) values (gui_view_s.nextVal, 'TEST_VIEW', 'grid', 'VIEW_TITLE') ''')
cur1 = con1.cursor()
cur1.execute('''select id from gui_view where title = 'VIEW_TITLE' ''')
rows_all1 = cur1.fetchall()
assert len(rows_all1) > 0, 'Not Exists!'
con1.close()
con2 = cx_Oracle.connect('user/pass:127.0.0.1:1521/XE:POOLED', cclass='test1', purity=cx_Oracle.ATTR_PURITY_SELF)
cur2 = con2.cursor()
cur2.execute('''select id from gui_view where title = 'VIEW_TITLE' ''')
rows_all = cur2.fetchall()
assert len(rows_all) == 0, 'Exist!'
con3 = cx_Oracle.connect('user/pass:127.0.0.1:1521/XE:POOLED', cclass='test')
cur3 = con3.cursor()
cur3.execute('''select id from gui_view where title = 'VIEW_TITLE' ''')
rows_all3 = cur3.fetchall()
con3.close()
assert len(rows_all3) > 0, 'Not Exists!'
有效。 可能会对某人有所帮助。 如果您对任务有其他想法,请写在这里。