例如,使用Python 3.9.6连接或创建连接池python-oracledb默认的"Thin"模式:
import oracledb
import os
un = os.environ.get("PYTHON_USERNAME")
pw = os.environ.get("PYTHON_PASSWORD")
cs = "doesnotexist.oracle.com/orclpdb1"
c = oracledb.connect(user=un, password=pw, dsn=cs)
在macOS上给出这个错误:
socket.gaierror: [Errno 8] nodename nor servname provided, or not known
在Linux上错误略有不同:
socket.gaierror: [Errno -2] Name or service not known
这是什么意思?
表示无法访问给定的主机名(或IP地址)。
解决方案是找到数据库所在的正确主机名(或IP地址)所在地。检查您使用的连接字符串中的拼写错误。传递有效的创建连接时的主机名,例如:
cs = "validhost.oracle.com/orclpdb1"
或者你可以使用:
connection = oracledb.connect(user=u, password=p,
host="validhost.oracle.com", service_name="orclpdb1")
同样的错误和解决方法也适用于创建连接池。
确保从运行Python的机器可以访问数据库主机。