【问题标题】:How to connect to Oracle 12c Database using cx_Oracle如何使用 cx_Oracle 连接到 Oracle 12c 数据库
【发布时间】:2018-08-08 09:09:47
【问题描述】:
sqlplus sys/Oracle_1@pdborcl as sysdba;

我正在使用此命令从命令提示符连接到 Oracle 12c。 如何使用 cx_Oracle 连接到数据库。我是 Oracle DB 的新手。

【问题讨论】:

    标签: python python-3.x oracle12c cx-oracle


    【解决方案1】:

    我认为这相当于您发布的 sqlplus 命令行:

    import cx_Oracle
    
    connect_string = "sys/Oracle_1@pdborcl"
    con = cx_Oracle.connect(connect_string,mode=cx_Oracle.SYSDBA)
    

    我尝试使用非容器数据库而不是 pdb,因此我无法验证它是否适用于 pdb。除非您知道自己需要该级别的安全性,否则您可能不想像 sysdba 一样连接 sys。

    鲍比

    【讨论】:

    • 谢谢鲍比.. 明白了。
    • 在寻找指导时遇到问题......它似乎工作我没有收到任何错误但我的结果集是空的,当我运行插入命令时它们没有添加到表中.....
    【解决方案2】:

    你可以在这里找到文档cx_Oracle docs

    要查询数据库,请使用以下算法

    import cx_Oracle
    
    dsn = cx_Oracle.makedsn(host, port, sid) 
    connection = cx_Oracle.connect(dsn,mode = cx_Oracle.SYSDBA)
    query = "SELECT * FROM MYTABLE"
    cursor = connection.cursor()
    cursor.execute(query)
    resultSet=cursor.fetchall()
    connection.close()
    

    以上代码用于从连接到上述 dsn 的 MYTABLE 中获取数据。 最好阅读 cx_Oracle 文档。

    【讨论】:

    • 这个答案显示了使用非常非常长的过时 SID 用法,这会欺骗很多人。首选方式是 dsn = cx_Oracle.makedsn(host, port, service_name="yourservicename")
    • 嗨 Shankar,当我使用 SID 时它失败了。我使用了@Bobby Durret 的上述方法。我认为在 Oracle 12c 中使用 SID 会失败,相反我们可以在制作“dsn”时使用“service_name = “pdborcl”而不是 SID
    • 谢谢克里斯托弗,你的方法对我有用。感谢您的帮助。
    • 在寻找指导时遇到问题......它似乎工作我没有收到任何错误但我的结果集是空的,当我运行插入命令时它们没有添加到表中.....
    猜你喜欢
    • 2020-02-06
    • 2021-08-06
    • 2020-08-10
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 2016-06-12
    • 2014-06-12
    • 2021-10-04
    相关资源
    最近更新 更多