标签: cx-oracle

cx_Oracle和输出变量

我正在尝试再次执行Oracle 10数据库:

cursor = connection.cursor()
lOutput = cursor.var(cx_Oracle.STRING)
cursor.execute("""
            BEGIN
                %(out)s := 'N';
            END;""",
            {'out' : lOutput})
print lOutput.value
Run Code Online (Sandbox Code Playgroud)

但我得到了

DatabaseError: ORA-01036: illegal variable name/number
Run Code Online (Sandbox Code Playgroud)

是否有可能以这种方式在cx_Oracle中定义PL/SQL块?

python oracle cx-oracle oracle10g

7
推荐指数
1
解决办法
5263
查看次数

python cx_oracle和服务器信息

为了演示Oracle的安全特性,当用户会话尚未建立时,必须调用OCIServerVersion()OCIServerRelease().

虽然有数据库参数sec_return_server_release_banner = false.我正在使用Python cx_Oracle模块,但我不确定如何在建立连接之前获取服务器版本.有任何想法吗?

python cx-oracle

7
推荐指数
1
解决办法
897
查看次数

cx_oracle和python 2.7

我正在使用python 2.7和cx_oracle(Windows x86安装程序(Oracle 10g,Python 2.7)),并且很难设置这个简单的示例:

import cx_Oracle
connection = cx_Oracle.connect('user/pass@someserver:port')
cursor = connection.cursor()
cursor.execute('select sysdate from dual')

for row in cursor:
    print row
connection.close()
Run Code Online (Sandbox Code Playgroud)

错误信息:

Traceback (most recent call last):
  File "C:\ORACON.py", line 1, in <module>
    import cx_Oracle
ImportError: DLL load failed: The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)

现在,我所做的是:

1)安装了cx_oracle二进制文件;

2)从oracle网站下载instantclient_10_2并导出环境路径;

谁知道我失踪了什么?

感谢您抽出宝贵时间阅读本文.

python cx-oracle python-2.7

7
推荐指数
1
解决办法
2万
查看次数

从Python中的cx_Oracle PL/SQL调用返回变量

我想通过Python中的cx_oracle执行Oracle PL/SQL语句.代码如下所示:

db = cx_Oracle.connect(user, pass, dsn_tns)
cursor = db.cursor()

... 

sel = """
DECLARE
  c   NUMBER := 0.2;
  mn  NUMBER := 1.5;
  res NUMBER;
BEGIN
  res := c+mn/6.;
END;
"""
try:
  cursor.execute(sel) 
  print "PL/SQL successful executed ..."
except cx_Oracle.DatabaseError as e:
  err, = e.args
  print "\n".join([str(err.code),err.message,err.context])
Run Code Online (Sandbox Code Playgroud)

代码运行没有问题,但有没有机会将结果返回到Python?

python plsql cx-oracle

7
推荐指数
2
解决办法
1万
查看次数

python模块无法使用virtualenv在PyCharm中工作

目前我有一个virtualenv创建与virtualenvwrapper.在那个virtualenv我用pip install cx_Oracle安装了cx_Oracle扩展.

我有一个python脚本使用cx_Oracle中的几个命令,如connect等.

在运行我的脚本时认为激活的env(python script.py)它工作正常并且不会产生错误.

但是当我尝试在PyCharm 4中运行相同的脚本时,它不起作用.我选择了intrepeter的virtualenv.运行脚本时,我收到如下错误:

/Users/pgerrits/.virtualenvs/siebelaudit/bin/python3.4 -u /Applications/PyCharm.app/Contents/helpers/pydev/pydev_run_in_console.py 64420 64421 /Users/pgerrits/PycharmProjects/SiebelAudit/Audit/Siebel Audit/scratchpad.py
Running /Users/pgerrits/PycharmProjects/SiebelAudit/Audit/Siebel Audit/scratchpad.py
PyDev console: starting.    
ImportError: dlopen(/Users/pgerrits/.virtualenvs/siebelaudit/lib/python3.4/site-packages/cx_Oracle.so, 2): Library not loaded: /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1
      Referenced from: /Users/pgerrits/.virtualenvs/siebelaudit/lib/python3.4/site-packages/cx_Oracle.so
      Reason: image not found
Run Code Online (Sandbox Code Playgroud)

在env激活的终端中使用相同的命令运行相同的脚本时,我没有收到任何错误.

我已经尝试了以下内容: - 使用脚本添加了用于oracle_home等的ENV变量 - 使用pycharm env变量选项添加了env变量

我必须切换到我的mac终端进行运行和调试,这真烦人.有谁知道这里可能出现什么问题?

python cx-oracle virtualenv pycharm virtualenvwrapper

7
推荐指数
1
解决办法
3252
查看次数

DatabaseError:ORA-01036:非法变量名称/编号

我需要将以下值替换为select查询.但我得到了错误,如下所述

self.jobNo = J-12060
qcActivity = C173
self.wrkArea = 1666339

cursor.execute("""SELECT A.MARKERID, D.COMMENTS,A.STATUS,A.X1,A.Y1,A.X2,A.Y2,C.ERRGROUP,C.ERRDESC,c.category
           FROM MDP_ERR_MASTER A,(SELECT MARKERID, MAX(RECNO) maxRECNO FROM MDP_ERR_MASTER where project_code = ':jobno'
           and errorcode like ':jobno_:qcActivity%' AND WORKAREA LIKE ':workarea%'
           GROUP BY MARKERID) B,MDP_ERR_CONFIG C,(SELECT MARKERID, COMMENTS FROM MDP_ERR_MASTER WHERE PROJECT_CODE = ':jobno'
           AND RECNO = 1 AND errorcode like ':jobno_:qcActivity%' AND WORKAREA LIKE ':workarea%') D
           WHERE(A.MARKERID = B.MARKERID And A.RECNO = B.maxRECNO And A.Markerid = D.MARKERID)AND A.PROJECT_CODE = ':jobno'
           AND A.ERRORCODE LIKE ':jobno_:qcActivity%'  AND A.WORKAREA LIKE …
Run Code Online (Sandbox Code Playgroud)

python cx-oracle oracle10g python-2.7

6
推荐指数
1
解决办法
2万
查看次数

如何在El Capitan上安装cx_Oracle

据我了解,有一些与SIP有关的变化使得安装这一点变得困难.

这些页面有安装的背景和建议.http://sourceforge.net/p/cx-oracle/mailman/message/34534872/,http://stefanoapostolico.com/2015/10/08/install_cx_oracle_with_sip_enabled.html

把所有这些放在一起,这是我最好的把它安装到我的virtualenv,但唉,仍然没有好处.

我得到的错误是:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: dlopen(/Users/me/sx_direct_env/lib/python2.7/site-packages/cx_Oracle.so, 2): Library not loaded: /b/227/rdbms/lib/libclntsh.dylib.10.1
  Referenced from: /Users/me/sx_direct_env/lib/python2.7/site-packages/cx_Oracle.so
  Reason: image not found
Run Code Online (Sandbox Code Playgroud)

以下是我的所有安装步骤:

$ cd /Users/me/sx_direct_env/lib/python2.7
$ mkdir oracle
$ cd oracle
$ export ORACLE_HOME=$PWD
$ export DYLD_LIBRARY_PATH=$ORACLE_HOME
$ export LD_LIBRARY_PATH=$ORACLE_HOME
$ export PATH=$PATH:$ORACLE_HOME
$ unzip ~/Downloads/instantclient-basic-macos.x64-11.2.0.4.0.zip
$ unzip ~/Downloads/instantclient-sdk-macos.x64-11.2.0.4.0.zip
$ mv instantclient_11_2/* .
$ rmdir instantclient_11_2
$ curl -O https://raw.githubusercontent.com/kubo/fix_oralib_osx/master/fix_oralib.rb
$ ruby -a fix_oralib.rb 
adrci:
   add rpath: @loader_path
   change …
Run Code Online (Sandbox Code Playgroud)

python oracle macos cx-oracle osx-elcapitan

6
推荐指数
2
解决办法
4940
查看次数

CX_Oracle - 将数据从Oracle导入到Pandas数据帧

HY,

我是python中的新手,我希望使用这个简单的查询将一些数据从Oracle数据库导入python(pandas dataframe)

SELECT* 
                FROM TRANSACTION
                WHERE DIA_DAT >=to_date('15.02.28 00:00:00',  'YY.MM.DD HH24:MI:SS')
                AND (locations <> 'PUERTO RICO'
                OR locations <> 'JAPAN')
                AND CITY='LONDON'
Run Code Online (Sandbox Code Playgroud)

我做了什么

import cx_Oracle
ip = 'XX.XX.X.XXX'
port = YYYY
SID = 'DW'
dsn_tns = cx_Oracle.makedsn(ip, port, SID)

connection = cx_Oracle.connect('BA', 'PASSWORD', dsn_tns)

df_ora = pd.read_sql('SELECT* FROM TRANSACTION WHERE DIA_DAT>=to_date('15.02.28 00:00:00',  'YY.MM.DD HH24:MI:SS') AND (locations <> 'PUERTO RICO' OR locations <> 'JAPAN') AND CITY='LONDON'', con=connection)  
Run Code Online (Sandbox Code Playgroud)

但我有这个错误

SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

谢谢

python oracle cx-oracle

6
推荐指数
1
解决办法
3万
查看次数

连接到 Oracle RDS

我正在尝试使用 AWS lambda 和 python 连接到 Oracle。

这些是我遵循的步骤。(EC2实例一切都做完了)

  1. 下载了 Instantclient-basic-linux.x64-12.2.0.1.0.zip 和
    instantclient-sdk-linux.x64-12.2.0.1.0.zip
  2. 创建此文件夹结构 ~/lambda/lib/
  3. 解压zip文件中的~/lambda/lib/
  4. libaio.so.1.0.1from复制/lib64/~/lambda/lib/
  5. 创建了libaio.so.1.0.1as libaio.soin 的符号链接~/lambda
  6. 使用 pip 安装cx_Oracle~/lambda
  7. 写在index.py脚本下面~lambda

`

import cx_Oracle

def handler(event, context):
    message = ""
    cursor = None
    connection = None    
    try:
        connection = cx_Oracle.connect("USERNAME", "PASSWORD", "DOMAIN/orcl")
        cursor = connection.cursor()
        cursor.execute("""QUERY""")
    except Exception as e:
        message += " {Error in connection} " + str(e)
    finally: …
Run Code Online (Sandbox Code Playgroud)

python cx-oracle amazon-web-services amazon-rds aws-lambda

6
推荐指数
1
解决办法
4742
查看次数

将编码参数从 sqlalchemy 传递给 cx_oracle

我正在使用带有UTF-16编码的Oracle 数据库。直接使用 cx_oracle 客户端时,可以正确显示变音符号。连接语句是这样的:

cx_Oracle.connect(username, password, conn_str, encoding='UTF-16', nencoding='UTF-16')
Run Code Online (Sandbox Code Playgroud)

但是,现在我正在构建更大的应用程序,我想SQLalchemyFlask.

代码如下所示:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy(app)
db.Model.metadata.reflect(db.engine)

class MyTable(db.Model):
    __table__ = db.Model.metadata.tables['mytable']

for row in MyTable.query:
    print(row.column_with_diacritics)
Run Code Online (Sandbox Code Playgroud)

上面代码的输出:aoe 但是数据库中的列值是:áóé

所以我的问题是,如何将参数传递encoding='UTF-16', nencoding='UTF-16'给 sqlalchemy 在底层使用的 cx_oracle?

感谢您提供任何建议或其他解决方法。

encoding cx-oracle sqlalchemy python-3.x flask-sqlalchemy

6
推荐指数
2
解决办法
1913
查看次数