我正在尝试再次执行Oracle 10数据库:
cursor = connection.cursor()
lOutput = cursor.var(cx_Oracle.STRING)
cursor.execute("""
            BEGIN
                %(out)s := 'N';
            END;""",
            {'out' : lOutput})
print lOutput.value
但我得到了
DatabaseError: ORA-01036: illegal variable name/number
是否有可能以这种方式在cx_Oracle中定义PL/SQL块?
为了演示Oracle的安全特性,当用户会话尚未建立时,必须调用OCIServerVersion()或OCIServerRelease().
虽然有数据库参数sec_return_server_release_banner = false.我正在使用Python cx_Oracle模块,但我不确定如何在建立连接之前获取服务器版本.有任何想法吗?
我正在使用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()
错误信息:
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.
现在,我所做的是:
1)安装了cx_oracle二进制文件;
2)从oracle网站下载instantclient_10_2并导出环境路径;
谁知道我失踪了什么?
感谢您抽出宝贵时间阅读本文.
我想通过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])
代码运行没有问题,但有没有机会将结果返回到Python?
目前我有一个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
在env激活的终端中使用相同的命令运行相同的脚本时,我没有收到任何错误.
我已经尝试了以下内容: - 使用脚本添加了用于oracle_home等的ENV变量 - 使用pycharm env变量选项添加了env变量
我必须切换到我的mac终端进行运行和调试,这真烦人.有谁知道这里可能出现什么问题?
我需要将以下值替换为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 …据我了解,有一些与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
以下是我的所有安装步骤:
$ 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 …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'
我做了什么
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)  
但我有这个错误
SyntaxError: invalid syntax
我做错了什么?
谢谢
我正在尝试使用 AWS lambda 和 python 连接到 Oracle。
这些是我遵循的步骤。(EC2实例一切都做完了)
~/lambda/lib/zip文件中的~/lambda/lib/libaio.so.1.0.1from复制/lib64/到~/lambda/lib/libaio.so.1.0.1as libaio.soin 的符号链接~/lambdacx_Oracle在~/lambdaindex.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: …我正在使用带有UTF-16编码的Oracle 数据库。直接使用 cx_oracle 客户端时,可以正确显示变音符号。连接语句是这样的:
cx_Oracle.connect(username, password, conn_str, encoding='UTF-16', nencoding='UTF-16')
但是,现在我正在构建更大的应用程序,我想SQLalchemy在Flask.
代码如下所示:
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)
上面代码的输出:aoe
但是数据库中的列值是:áóé
所以我的问题是,如何将参数传递encoding='UTF-16', nencoding='UTF-16'给 sqlalchemy 在底层使用的 cx_oracle?
感谢您提供任何建议或其他解决方法。
cx-oracle ×10
python ×9
oracle ×3
oracle10g ×2
python-2.7 ×2
amazon-rds ×1
aws-lambda ×1
encoding ×1
macos ×1
plsql ×1
pycharm ×1
python-3.x ×1
sqlalchemy ×1
virtualenv ×1