导入Django.db.Models会影响cx_Oracle连接到其他数据库的方式吗?

时间:2014-03-20 21:22:00

标签: django oracle cx-oracle

我有一个Django应用程序,它使用cx_Oracle作为我们办公室中使用Oracle数据库的后端,但它也直接使用cx_Oracle连接到其他远程Oracle数据库(我们的客户)。在我创建了django.db.Models的任何子类之后,一些远程数据库(总是相同的几个)无法连接(我通过反复试验找到了这个)

如果我没有导入我的模型,或者我从#34; oracle"更改了django数据库。到其他东西,然后一切正常,我可以连接到所有的远程数据库。因此,Django Model代码中的某些内容似乎以全局方式影响cx_Oracle。

以下是我的一条线索:我使用wireshark将成功的连接与不成功的连接进行比较,我发现不成功的连接尝试确实包含了某种类似的"握手&#34 ;最初从服务器返回,但随后客户端发送了很多" ALTER SESSION ... NLS_DATE_FORMAT"以及许多其他" NLS"之后,服务器永远不会响应。在成功的尝试中,那些NSL并不存在。

真正令人困惑的部分是只有"坏"数据库(少数有问题)在连接期间获取所有这些ALTER SESSION命令。 "好"即使我导入了模型,数据库也无法获得这些数据库。我一直在寻找" good"之间的差异。并且"坏"数据库(NLS设置,数据库设置,数据库版本等),但它们都是相同的。

这对我来说是一个巨大的谜。我正在考虑将我的实际Django DB移到MySQL上,只是为了避免这个问题 - 但这很疯狂 - 我们是Oracle商店,我们已经运行了很多Oracle数据库。

所以问题是: 基本的django.db.oracle代码是否对cx_Oracle做了哪些影响它连接的方式? 它可能做什么? 我的"坏"之间可能有什么区别?数据库和我的"好"那些? 它们几乎完全相同,除Django外,它们都适用于所有人。 只要我从不导入任何模型,它们都可以正常使用cx_Oracle。

编辑:

为解决这个问题,我已将Django后端从Oracle切换到MySQL。 我直接在我的Web服务器上安装了MySQL,并使用Django" dumpdata"迁移了我的所有数据。和" loaddata"工具。这简直太容易了。现在我可以毫无问题地连接到我的所有远程Oracle数据库,因为Django不再混淆我的Python / Oracle驱动程序。 我的应用程序也稍微快一点,因为db现在与Web服务器在同一个盒子上。 在这种情况下,我会向任何人推荐这个解决方案。

0 个答案:

没有答案