【问题标题】:Oracle connection string with at sign @ in pasword带有 at 符号 @ 密码的 Oracle 连接字符串
【发布时间】:2014-11-04 05:23:01
【问题描述】:

我有一个使用连接字符串连接到 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 指定

我在这个设置下使用 Django 和 Oracle

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

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

【问题讨论】:

  • 为什么会有问题?什么症状?
  • DatabaseError: ORA-12154: TNS:could not resolve the connect identifier specified
  • @DanielRoseman 问题是用户名密码中的@ 字符,用于EasyConnect (documentation)

标签: python django oracle connection-string django-oracle


【解决方案1】:

我还没有尝试过 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 DB 中使用连接。我怎样才能强制它使用这种连接方式
  • 我的 Django DB 知识几乎为零 :(。抱歉。您可能想为此创建一个新问题?
  • 别忘了使用 unicode(如果还在 Python 2.7 中?),比如 cx_Oracle.connect(user=**u'username'**, ...)...
【解决方案2】:

您可以根据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)

【讨论】:

    【解决方案3】:

    仅供参考:这在 Django 中长期存在的bug。包含该修复的第一个稳定版本是 v2.1

    【讨论】:

      【解决方案4】:

      这行得通吗?

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-17
        • 2017-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-13
        • 1970-01-01
        • 2014-12-03
        相关资源
        最近更新 更多