cx_oracle.connect 如何在服务器上指定具体的数据库

How to specify the specific database on the server in cx_oracle.connect

我必须连接到 Oracle 服务器并且只能使用服务器上的特定数据库。我有这样的登录信息:

hostname = 'xxxxx.yyyy.xxxx.net:1521/{server_name}'
user_name= 'user'
password = 'password'
db_name= 'uuuu'
cx_Oracle.connect(user_name, password, hostname)

如何在connect语句中指定connect语句中的db_name?

以上允许我查询:select * from uuuu.my_table;。那么我如何在连接中指定 uuuu 这样我就不必每次都添加。

来自docs...

import cx_Oracle

userpwd = ". . ." # Obtain password string from a user prompt or environment variable

connection = cx_Oracle.connect("hr", userpwd, "dbhost.example.com/orclpdb1", encoding="UTF-8")

连接字符串末尾的 'ocrlpdb1',即数据库的服务名称,即 dbhost.example.com 上的 运行。我们假设该机器上的 Oracle Listener 使用端口 1521(默认)。

"uuuu" 在您的示例中似乎是架构名称而不是数据库名称。您不能在连接字符串中指定架构名称(除非以 "uuuu" 用户身份登录)。但是,一旦连接到数据库,您就可以 运行 语句

alter session set current_schema = uuuu;

这将导致语句

select * from my_table

在 "uuuu" 架构中查找 my_table 对象,而不是在当前用户的架构中查找。或者,您可以为 my_table 和您要引用的其他 "uuuu" 架构对象创建同义词(public 或私有)。