Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django数据库连接库问题_Python_Django_Python 3.x_Oracle_Pandas - Fatal编程技术网

Python Django数据库连接库问题

Python Django数据库连接库问题,python,django,python-3.x,oracle,pandas,Python,Django,Python 3.x,Oracle,Pandas,我面对这种行为,不确定这是一个错误。当我使用从cx\U Oracle创建的连接时,它会按照假设工作。 但当我使用Django DB连接时,它给出了结果,但并不像预期的那样 import cx_Oracle from django.db import connections import pandas as pd dsn_tns = cx_Oracle.makedsn('xx.x.xx.xxx', 'port', 'dbname') cx_Oracle_conn = cx_Oracle.conn

我面对这种行为,不确定这是一个错误。当我使用从
cx\U Oracle
创建的连接时,它会按照假设工作。 但当我使用Django DB连接时,它给出了结果,但并不像预期的那样

import cx_Oracle
from django.db import connections
import pandas as pd

dsn_tns = cx_Oracle.makedsn('xx.x.xx.xxx', 'port', 'dbname')
cx_Oracle_conn = cx_Oracle.connect('user', 'pass', dsn_tns)

django_conn = connections["DB2"] # In django settings, I have a created "DB2" and passed the same parameters.

query = ''' 
SELECT (T1.ACCEPTED- T2.CANCELLED) AS "NET" FROM
(
SELECT ID, COUNT(1) AS ACCEPTED FROM ACCEPTED_TABLE
GROUP BY ID
) T1
LEFT JOIN
(SELECT ID, COUNT(1) AS CANCELLED FROM CANCELLED_TABLE
GROUP BY ID) T2
ON T1.ID=T2.ID
'''

df1 = pd.read_sql(query, cx_Oracle_conn) # Gives right result
df2 = pd.read_sql(query, django_conn) # Gives only count of T1.ACCEPTED(T2.CANCELLED having 0 count)
问题:

  • 这是什么原因?连接如何影响查询的执行
  • 是Django的虫子吗?或者我需要以其他方式使用django连接吗
  • django.db.backends.oracle如何工作?你能详细解释一下吗
  • 版本:

    Django==2.1.2

    Python==3.6.7

    'ENGINE': 'django.db.backends.oracle' # As mentioned in django document in DB connections
    

    您确定,
    DB2
    指向的位置与
    cx\u Oracle\u conn
    指向的位置相同吗?@trinchet是的,我为两个连接提供了相同的凭据。DB2是
    settings.py
    文件中提供的数据库名称。通常,我使用django连接。在面对这个有线问题后,我尝试了正常的连接过程。其他查询是针对django连接返回意外结果,还是仅返回原始帖子中的结果?要三次检查两个连接是否指向同一个位置,可以将查询更改为:
    selectuser | |'||SYS|u CONTEXT('USERENV','DB|u NAME')|||来自dual的系统上下文('USERENV','SERVER\u HOST')此外,这篇文章建议使用read\u sql\u查询和QuerySet而不是read\u sql填充数据帧的另一种方法。你试过了吗?@cdub没有,Django连接在其他查询中运行良好。仅对于原始帖子,它返回了意外的结果。我还通过将相同的参数传递到两个连接来检查空闲状态。我得到了同样意想不到的结果。在链接中,django有模型。但就我而言,我没有创建任何模型。所以,我已经有了一个查询字符串。我也尝试过使用
    read\u sql\u query
    (没有用)。这将有助于查看Oracle正在解析的sql在这两个连接之间是否不同。您通常可以使用v$session和v$sql视图来查找已解析的查询,或者与DBA一起跟踪会话。如果两者之间的SQL相同,那么我就没有想法了。