尝试通过settings.py连接到Oracle DB
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.oracle',
'NAME': 'Hostname:Port/Service name not SID',
'USER': 'Username',
'PASSWORD': 'Password',
}
}
Run Code Online (Sandbox Code Playgroud)
根据我在网上找到的信息,这应该是如果没有SID时如何通过服务名称连接到Oracle DB的方法。但是我仍然得到错误django.db.utils.DatabaseError: ORA-12154: TNS:could not resolve the connect identifier specified
但是,如果我放弃将这些详细信息放在中,settings.py而只使用,提供的连接字符串cx_Oracle,
dsn_tns = cx_Oracle.makedsn('Hostname', 'Port',
service_name='Service name not SID')
connection = cx_Oracle.connect('Username', 'Password', dsn_tns)
Run Code Online (Sandbox Code Playgroud)
我连接很好。是否有新语法可以连接到settings.py的服务名称?如果我可以简单地通过连接字符串进行连接,那么尝试通过settings.py进行连接是否有意义?
我有一个使用连接字符串连接到oracle的代码:
conn = cx_Oracle.connect('username/password@server:port/services')
Run Code Online (Sandbox Code Playgroud)
但问题是我的密码包含@字符,所以它可能会成为
conn = cx_Oracle.connect('username/p@ssword@server:port/services')
Run Code Online (Sandbox Code Playgroud)
它回来了
DatabaseError:ORA-12154:TNS:无法解析指定的连接标识符
我在这个设置中使用Django和Oracle
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.oracle',
'NAME': 'Services',
'USER': 'user',
'PASSWORD': 'p@ssword',
'HOST': 'ip',
'PORT': 'port',
}
}
Run Code Online (Sandbox Code Playgroud)
我无法更改密码:(有谁知道这个问题?
我只想将本地 oracle 数据库与 django 项目连接,但我的数据库凭据不起作用。实际上,我可以通过 sql Developer 使用该凭据连接我的 Oracle 数据库:

我只是在 django settings_py 中使用了该凭证
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.oracle',
'NAME': 'INTERNAL',
'USER': 'system',
'PASSWORD': 'oracle',
'HOST':'localhost/xe',
'PORT':'1521'
}
}
Run Code Online (Sandbox Code Playgroud)
错误是:
Traceback (most recent call last):
web_1 | File "manage.py", line 22, in <module>
web_1 | execute_from_command_line(sys.argv)
web_1 | File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
web_1 | utility.execute()
web_1 | File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 356, in execute
web_1 | self.fetch_command(subcommand).run_from_argv(self.argv)
web_1 | File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv
web_1 | …Run Code Online (Sandbox Code Playgroud)