在pasword中带有at符号@的Oracle连接字符串

2024-04-23 06:30:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个使用连接字符串连接到oracle的代码:

conn = cx_Oracle.connect('username/password@server:port/services')

但问题是我的密码包含@字符,所以它可能

conn = cx_Oracle.connect('username/p@ssword@server:port/services')

它回来了

DatabaseError: ORA-12154: TNS:could not resolve the connect identifier specified

我将Django与Oracle一起用于此设置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.oracle', 
        'NAME': 'Services',  
        'USER': 'user',                      
        'PASSWORD': 'p@ssword',                  
        'HOST': 'ip',                      
        'PORT': 'port',                      
    }
}

我不能更改密码:(有人知道这个问题吗?


Tags: 字符串代码密码serverportconnectserviceusername
3条回答

我没有尝试过cx_Oracle,但是您可以通过指定各个参数来连接-

conn = cx_Oracle.connect(user='username', password='p@ssword', dsn='server:port/services')

或者

dsn_tns = cx_Oracle.makedsn('server', 'port', 'services')
conn = cx_Oracle.connect(user='username', password='p@ssword', dsn=dsn_tns)

仅供参考:这是在Django长期存在的{a1}。包含修复程序的第一个稳定版本是v2.1

您可以基于Service NameSID使用以下任何方法。

使用SID:

dsn_tns = cx_Oracle.makedsn('server', 'port', 'sid')
conn = cx_Oracle.connect(user='username', password='p@ssword', dsn=dsn_tns)

服务名称:

dsn_tns = cx_Oracle.makedsn('server', 'port', service_name='service_name')
conn = cx_Oracle.connect(user='username', password='p@ssword', dsn=dsn_tns)

相关问题 更多 >