需求:编程化连接 Oracle 数据库并进行 helloworld 级别的创建表、增删改查。
目前做了的工作:
- 使用 oralce linux 8 系统
- 安装 oracle 的版本是 19c
- 基本上按照谷歌搜索排名靠前的这个链接的说明安装
- 安装过程简单来说是 dnf install oracle-database-preinstall-19c ,然后在图形界面中执行安装程序,安装过程中选择单实例-服务器模式
疑问:
尝试使用 python-cx_Oracle 库连接数据库,文档给出范例代码
import cx_Oracle
userpwd = ". . ." # Obtain password string from a user prompt or environment variable
connection = cx_Oracle.connect(user="hr", password=userpwd,
dsn="dbhost.example.com/orclpdb1",
encoding="UTF-8")
疑问在于,安装过程中没有印象配置了监听 IP/监听端口的选项,并且数据库名的表达和 mysql 系列似乎不太相同,且印象中创建了三个管理员用户,让我比较混乱,上述代码中到底应该使用哪个用户,什么 IP 和端口,如何指定要连接的数据库,这个 dsn 的构造规则也不太清楚。另外依稀印象里多年前使用 oracle 的时候,似乎 oracle 安装完成后是需要再单独设置监听服务的种种细节的,这次安装没有进行类似操作。
尝试使用下述代码连接
import cx_Oracle
dsn = cx_Oracle.makedsn(
host = 'localhost',
port = '1521',
sid = 'xe'
)
connection = cx_Oracle.connect(
user="root",
password="123456",
dsn=dsn
)
得到错误提示
Traceback (most recent call last):
File "/home/tmp/test.py", line 8, in <module>
connection = cx_Oracle.connect(
cx_Oracle.DatabaseError: ORA-12505: TNS:listener does not currently know of SID given in connect descriptor