diff options
| author | Ian Kelly <ian.g.kelly@gmail.com> | 2010-12-03 00:54:39 +0000 |
|---|---|---|
| committer | Ian Kelly <ian.g.kelly@gmail.com> | 2010-12-03 00:54:39 +0000 |
| commit | cbf9d6e0bbc323a81449250f139944e4c0b23b2c (patch) | |
| tree | 358786b1c75cc6771f5d5f61b82a4bdd10b3b567 | |
| parent | bb10a5ba79ecaea7d32b62afe90e83407adf0b74 (diff) | |
Fixed the Oracle environment variables not getting set correctly under Cygwin.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@14781 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/db/backends/oracle/base.py | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/django/db/backends/oracle/base.py b/django/db/backends/oracle/base.py index d0ed6df3e2..cf8d920989 100644 --- a/django/db/backends/oracle/base.py +++ b/django/db/backends/oracle/base.py @@ -6,16 +6,35 @@ Requires cx_Oracle: http://cx-oracle.sourceforge.net/ import datetime -import os import sys import time from decimal import Decimal -# Oracle takes client-side character set encoding from the environment. -os.environ['NLS_LANG'] = '.UTF8' -# This prevents unicode from getting mangled by getting encoded into the -# potentially non-unicode database character set. -os.environ['ORA_NCHAR_LITERAL_REPLACE'] = 'TRUE' + +def _setup_environment(environ): + import platform + # Cygwin requires some special voodoo to set the environment variables + # properly so that Oracle will see them. + if platform.system().upper().startswith('CYGWIN'): + try: + import ctypes + except ImportError: + raise ImportError("ctypes not found. The Oracle backend requires ctypes to operate correctly under Cygwin.") + kernel32 = ctypes.CDLL('kernel32') + for name, value in environ: + kernel32.SetEnvironmentVariableA(name, value) + else: + import os + os.environ.update(environ) + +_setup_environment([ + # Oracle takes client-side character set encoding from the environment. + ('NLS_LANG', '.UTF8'), + # This prevents unicode from getting mangled by getting encoded into the + # potentially non-unicode database character set. + ('ORA_NCHAR_LITERAL_REPLACE', 'TRUE'), +]) + try: import cx_Oracle as Database |
