Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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
将Excel Oracle DB查询转换为Python查询_Python_Sql_Excel_Database_Oracle - Fatal编程技术网

将Excel Oracle DB查询转换为Python查询

将Excel Oracle DB查询转换为Python查询,python,sql,excel,database,oracle,Python,Sql,Excel,Database,Oracle,我有一个简单的程序,可以在Python中与Oracle DB建立连接。我需要一些关于如何在Python中编写SQL查询的提示。我有一个可以正常工作的Excel查询,但我需要Python中的它,我想我在Excel查询连接属性中有我需要的东西。我的python程序如下所示- import pandas as pd import cx_Oracle from sys import exit conn= cx_Oracle.connect('DOMINA_CO/S#UU@ex021-orc.corp.

我有一个简单的程序,可以在Python中与Oracle DB建立连接。我需要一些关于如何在Python中编写SQL查询的提示。我有一个可以正常工作的Excel查询,但我需要Python中的它,我想我在Excel查询连接属性中有我需要的东西。我的python程序如下所示-

import pandas as pd
import cx_Oracle
from sys import exit

conn= cx_Oracle.connect('DOMINA_CO/S#UU@ex021-orc.corp.mycompany.com:1540/domp_domi_bi')
try:
    query = '''
     SELECT * from dual
         '''
    df = pd.read_sql(con = conn, sql = query)
    finally:
conn.close()
df.head()

exit()
返回-

Out[2]: 
DUMMY
0     X
在Excel中,我有工作查询的连接属性,该查询包含命令文本:如下所示:

SELECT TO_CHAR (DGE_DATOS_INSTALACIONES.FEC_LOCAL - (1/24), 'YYYY-MM') MONTH,
       REPLACE(DGE_NEGOCIOS.NOM_NEGOCIO, 'ESPAÑA', 'SPAIN') BUSINESS,
       REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(DGE_PAISES.NOM_PAIS, 'ESPAÑA', 'SPAIN'), 'ALEMANIA', 'GERMANY'), 'BRASIL', 'BRAZIL'), 'CHIPRE', 'CYPRUS'), 'FRANCIA', 'FRANCE'), 'GRECIA', 'GREECE'), 'HUNGRIA', 'HUNGARY'), 'ITALIA', 'ITALY'), 'POLONIA', 'POLAND'), 'RUMANIA', 'ROMANIA'), 'ESCOCIA', 'SCOTLAND'), 'GALES', 'WALES'), 'INGLATERRA', 'ENGLAND'), 'IRLANDA DEL NORTE', 'NORTHERN IRELAND'), 'IRLANDA', 'IRELAND'), 'ESTADOS UNIDOS', 'UNITED STATES') COUNTRY,
       DGE_REGIONES.NOM_REGION REGION,
       DGE_INSTALACIONES.NOM_INSTALACION PARK,
       ROUND(SUM(DGE_DATOS_INSTALACIONES.CAN_PRODUCIBLE_SUMA*DGE_DATOS_INSTALACIONES.COEF_PERDIDAS_MEDIA_TENSION*DGE_DATOS_INSTALACIONES.COEF_PERDIDAS_PF)/1000) "POTENTIAL_GEN_(MWH)"

FROM DOMINAGE.DGE_DATOS_INSTALACIONES DGE_DATOS_INSTALACIONES,
     DOMINAGE.DGE_NEGOCIOS DGE_NEGOCIOS,
     DOMINAGE.DGE_PAISES DGE_PAISES,
     DOMINAGE.DGE_REGIONES DGE_REGIONES,
     DOMINAGE.DGE_INSTALACIONES DGE_INSTALACIONES

WHERE DGE_DATOS_INSTALACIONES.FEC_LOCAL >= TO_DATE('01-JAN-13 01:00', 'DD-MON-YY HH24:MI')
      AND DGE_DATOS_INSTALACIONES.COD_INSTALACION = DGE_INSTALACIONES.COD_INSTALACION
      AND DGE_INSTALACIONES.COD_NEGOCIO = DGE_NEGOCIOS.COD_NEGOCIO
      AND DGE_INSTALACIONES.COD_PAIS = DGE_PAISES.COD_PAIS
      AND DGE_INSTALACIONES.COD_REGION = DGE_REGIONES.COD_REGION

GROUP BY TO_CHAR (DGE_DATOS_INSTALACIONES.FEC_LOCAL - (1/24), 'YYYY-MM'),
         DGE_NEGOCIOS.NOM_NEGOCIO,
         DGE_PAISES.NOM_PAIS,
         DGE_REGIONES.NOM_REGION,
         DGE_INSTALACIONES.NOM_INSTALACION

ORDER BY MONTH,
         REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(BUSINESS, 'UNITED STATES', '1'), 'SPAIN', '2'), 'UNITED KINGDOM', '3'), 'INTERNATIONAL', '4'), 'OFFSHORE', '5'),
         COUNTRY,
         PARK

非常感谢将此查询转换为python查询的任何帮助,因为我对用python编写db查询非常陌生

查询将是相同的。在这两种情况下,它都被发送到数据库以执行和返回数据。因为文本包含单引号,所以您希望用三个双引号将其括起来,而不是在SELECT*FROM DUAL周围使用三个单引号。

查询将是相同的。在这两种情况下,它都被发送到数据库以执行和返回数据。由于文本包含单引号,因此您将希望使用三个双引号将其括起来,而不是在SELECT*FROM DUAL周围使用三个单引号。

无需翻译。只需重新运行相同的查询。Python和Excel VBA充当连接到同一后端数据库(此处为Oracle)的客户端应用程序。数据库设计用于连接到任何客户端

实际上,考虑在文本.sql文件中保存您的长SQL查询,并让所有客户端都只需读取脚本文件,避免在代码中使用引线框或行中断的长字符串。

蟒蛇

conn=cx_Oracle.connect'…' 从文件中读取SQL查询 使用openr'C:\path\to\my\query.sql'作为f: query=f.read.strip 导入到数据帧中 尝试: df=pd.read\u sqlcon=conn, sql=从.sql文件读取的查询 最后: 康涅狄格州 测向头 excelvba

'从文件读取SQL查询 使用CreateObjectScripting.FileSystemObject sql=.OpenTextFileC:\Path\To\my\query.sql,1.readall 以 '打开数据库连接 Set conn=新的ADODB.连接 康涅狄格州开放。。。 '定义命令对象 Set cmd=New ADODB.Command 使用cmd .ActiveConnection=conn .CommandType=adCmdText .CommandText=sql'查询从.sql文件读取 设置rst=cmd.Execute 以
不需要翻译。只需重新运行相同的查询。Python和Excel VBA充当连接到同一后端数据库(此处为Oracle)的客户端应用程序。数据库设计用于连接到任何客户端

实际上,考虑在文本.sql文件中保存您的长SQL查询,并让所有客户端都只需读取脚本文件,避免在代码中使用引线框或行中断的长字符串。

蟒蛇

conn=cx_Oracle.connect'…' 从文件中读取SQL查询 使用openr'C:\path\to\my\query.sql'作为f: query=f.read.strip 导入到数据帧中 尝试: df=pd.read\u sqlcon=conn, sql=从.sql文件读取的查询 最后: 康涅狄格州 测向头 excelvba

'从文件读取SQL查询 使用CreateObjectScripting.FileSystemObject sql=.OpenTextFileC:\Path\To\my\query.sql,1.readall 以 '打开数据库连接 Set conn=新的ADODB.连接 康涅狄格州开放。。。 '定义命令对象 Set cmd=New ADODB.Command 使用cmd .ActiveConnection=conn .CommandType=adCmdText .CommandText=sql'查询从.sql文件读取 设置rst=cmd.Execute 以
好的,我是否需要从双部分删除SELECT*,在上面插入完整的查询,然后用6个引号将其括起来,如“”“”?对于引用,请看类似Ok的示例,我是否需要从双部分删除SELECT*,在上面插入完整的查询,然后用6个引号将其括起来,如“”“”?对于引用,请看类似感谢的示例。我在sql=query行上得到一个类型错误。看起来应该是字符串或字节对象。f.readlines返回一个列表,每行包含一个元素。f、 read将整个文件作为一个带内嵌换行符的str返回。@user2100039,请参阅编辑并重试。非常好-谢谢!谢谢我在sql=query行上得到一个类型错误。看起来应该是字符串或字节对象。f.readlines返回一个列表,每行包含一个元素。f、 read将整个文件作为一个带内嵌换行符的str返回。@user2100039,请参阅编辑并重试。非常好-谢谢!