Python 如何使用cx\U Oracle连接到Oracle 12c数据库

Python 如何使用cx\U Oracle连接到Oracle 12c数据库,python,python-3.x,oracle12c,cx-oracle,Python,Python 3.x,Oracle12c,Cx Oracle,我正在使用此命令从命令提示符连接到Oracle 12c。 如何使用cx_Oracle连接到数据库。我是Oracle DB的新手。您可以在这里找到文档 要查询数据库,请使用以下算法 sqlplus sys/Oracle_1@pdborcl as sysdba; 上述代码用于从连接到上述dsn的MYTABLE中获取数据。 最好浏览cx\U Oracle文档。您可以在此处找到文档 要查询数据库,请使用以下算法 sqlplus sys/Oracle_1@pdborcl as sysdba; 上述代码

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

您可以在这里找到文档

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

sqlplus sys/Oracle_1@pdborcl as sysdba;
上述代码用于从连接到上述dsn的MYTABLE中获取数据。
最好浏览cx\U Oracle文档。

您可以在此处找到文档

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

sqlplus sys/Oracle_1@pdborcl as sysdba;
上述代码用于从连接到上述dsn的MYTABLE中获取数据。
最好浏览cx_Oracle文档。

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

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()
我使用非容器数据库而不是pdb进行了尝试,因此我无法验证它是否可以与pdb一起使用。您可能不希望以sys作为sysdba进行连接,除非您知道需要该级别的安全性


Bobby

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

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()
我使用非容器数据库而不是pdb进行了尝试,因此我无法验证它是否可以与pdb一起使用。您可能不希望以sys作为sysdba进行连接,除非您知道需要该级别的安全性


Bobby

这个答案显示了使用非常非常长的过时SID用法,这将欺骗许多人。首选的方法是dsn=cx\u Oracle.makedsn(主机、端口、服务\u name=“yourservicename”)在我使用SID时,它会失败。。我使用了@Bobby Durret的上述方法。我认为在Oracle 12c中使用SID会失败,相反,我们可以在制作“dsn”时使用“service_name=“pdborcl”代替SID。谢谢Christopher,您的方法对我有用。谢谢你的帮助。有问题需要指导。。。这似乎是可行的,我没有收到任何错误,但我的结果集是空的,当我运行insert命令时,它们没有添加到表中……这个答案表明使用非常非常长的过时SID用法会欺骗很多人。首选的方法是dsn=cx\u Oracle.makedsn(主机、端口、服务\u name=“yourservicename”)在我使用SID时,它会失败。。我使用了@Bobby Durret的上述方法。我认为在Oracle 12c中使用SID会失败,相反,我们可以在制作“dsn”时使用“service_name=“pdborcl”代替SID。谢谢Christopher,您的方法对我有用。谢谢你的帮助。有问题需要指导。。。这似乎是可行的,我没有收到任何错误,但我的结果集是空的,当我运行insert命令时,它们不会添加到表中…谢谢Bobby。。明白了。有个问题需要指导。。。这似乎是可行的,我没有收到任何错误,但我的结果集是空的,当我运行insert命令时,它们不会添加到表中…谢谢Bobby。。明白了。有个问题需要指导。。。这似乎是可行的,我没有收到任何错误,但我的结果集是空的,当我运行insert命令时,它们没有添加到表中。。。。。