Fla*_*air 5 python sql oracle django django-oracle
尝试通过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进行连接是否有意义?
小智 0
尝试这个。
设置.py
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
EHS_CONF_PATH = os.path.join(BASE_DIR, 'arquivo.conf')
DATABASES = {
'default': {
'ENGINE': os.environ['DB_ENGINE'],
'NAME': os.environ['DB_NAME'],
'HOST': os.environ.get('DB_HOST', 'localhost'),
'PORT': os.environ.get('DB_PORT', '1521'),
'USER': os.environ.get('DB_USER', 'user'),
'PASSWORD': os.environ.get('DB_PASS', "pass")
}
}
Run Code Online (Sandbox Code Playgroud)
arquivo.conf
DB_NAME=XE
DB_USER=user
DB_PASS=pass
DB_HOST=10.7.0.140 <-- ip host
DB_PORT=1521
DB_ENGINE=django.db.backends.oracle
Run Code Online (Sandbox Code Playgroud)
当我的密码包含“@”时,我遇到了问题
| 归档时间: |
|
| 查看次数: |
1841 次 |
| 最近记录: |