← Back
Editing: base.cpython-311.pyc
� �|�e�X � �� � d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl m Z ddlmZ ddl mZ ddlmZ dd lmZmZ dd lmZ d� Z edd g� � ddlZn# e$ rZ e dez � � �dZ[ww xY wddlmZ ddlmZ ddlm Z ddl!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z(m)Z) ddl*m+Z+ ed� � � Z, G d� d� � Z- G d� de� � Z. G d� d� � Z/ G d� d � � Z0 G d!� d"� � Z1dS )#ze Oracle database backend for Django. Requires cx_Oracle: https://oracle.github.io/python-cx_Oracle/ � N)�contextmanager)�settings)�ImproperlyConfigured)�IntegrityError)�BaseDatabaseWrapper)�async_unsafe)�force_bytes� force_str)�cached_propertyc �r � t j � � � � � � d� � r_ dd l}n$# t $ r}t d|z � � �d }~ww xY w|� d� � }| D ]\ }}|� ||� � �d S t j � | � � d S )N�CYGWINr z_Error loading ctypes: %s; the Oracle backend requires ctypes to operate correctly under Cygwin.�kernel32)�platform�system�upper� startswith�ctypes�ImportErrorr �CDLL�SetEnvironmentVariableA�os�environ�update)r r �er �name�values �@/usr/lib/python3/dist-packages/django/db/backends/oracle/base.py�_setup_environmentr s� � � ������ � �+�+�H�5�5� #� N��M�M�M�M��� N� N� N�&� (I�KL�(M� N� N� N����� N���� �;�;�z�*�*��"� :� :�K�D�%��,�,�T�5�9�9�9�9� :� :� � ���'�"�"�"�"�"s �? � A � A�A )�NLS_LANGz .AL32UTF8)�ORA_NCHAR_LITERAL_REPLACE�TRUEz"Error loading cx_Oracle module: %s� )�DatabaseClient)�DatabaseCreation)�DatabaseFeatures)�DatabaseIntrospection)�DatabaseOperations)�DatabaseSchemaEditor)�Oracle_datetime�dsn)�DatabaseValidationc # � K � d V � d S # t j $ rk} | j d }t |d� � rHt |d� � r8|j dk r-d|j v s d|j v rt t | j � � � �� d } ~ ww xY w)Nr �code�messagei+ z ORA-02291z ORA-00001)�Database� DatabaseError�args�hasattrr- r. r �tuple)r �xs r �wrap_oracle_errorsr5 ? s� � � � �� ��������!� � � � �F�1�I���A�v��� 1��A�y�!�!� 1� �F�d�N�N� �A�I� %� %��� �)A�)A� �%���-�-�0�0� �����'���s � �B�A&A?�?Bc � � e Zd Zdd�ZdS )�!_UninitializedOperatorsDescriptorNc � � |�t d� � �|� � � � � � |j d S )Nz*operators not available as class attribute� operators)�AttributeError�cursor�close�__dict__)�self�instance�clss r �__get__z)_UninitializedOperatorsDescriptor.__get__[ sC � � �� �!M�N�N�N��������!�!�!�� ��-�-� �N)�__name__� __module__�__qualname__rA � rB r r7 r7 Y s( � � � � � �.� .� .� .� .� .rB r7 c �D � � e Zd ZdZdZi dd�dd�dd�d d �dd�d d�dd�dd�dd�dd�dd�dd�dd�dd�dd�dd �d!d"�d dddddd#dddd$d%d&��Zd'd(d'd)d)d)d*�Zd+Z e� � Z d,d-d.d/d0d1d2d3d.d.d/d/d4�Z i e �d5d6d5d5d6d6d7��Zd8Zd9d:d;d<d=d>d?�Z d@� e � � � D � � ZdA� e � � � D � � ZeZeZeZeZeZeZeZeZ� fdB�Z dC� Z!e"dD� � � Z#dE� Z$e"dOdG�� � Z%dH� Z&dI� Z'dJ� Z(dOdK�Z)dL� Z*e+dM� � � Z,e+dN� � � Z-� xZ.S )P�DatabaseWrapper�oracle�Oracle� AutoFieldz3NUMBER(11) GENERATED BY DEFAULT ON NULL AS IDENTITY�BigAutoFieldz3NUMBER(19) GENERATED BY DEFAULT ON NULL AS IDENTITY�BinaryField�BLOB�BooleanFieldz NUMBER(1)� CharFieldzNVARCHAR2(%(max_length)s)� DateField�DATE� DateTimeField� TIMESTAMP�DecimalFieldz*NUMBER(%(max_digits)s, %(decimal_places)s)� DurationFieldzINTERVAL DAY(9) TO SECOND(6)� FileField� FilePathField� FloatFieldzDOUBLE PRECISION�IntegerFieldz NUMBER(11)� JSONField�NCLOB�BigIntegerFieldz NUMBER(19)�IPAddressFieldzVARCHAR2(15)�GenericIPAddressFieldzVARCHAR2(39)z2NUMBER(5) GENERATED BY DEFAULT ON NULL AS IDENTITYzVARCHAR2(%(max_length)s)zVARCHAR2(32))�NullBooleanField� OneToOneField�PositiveBigIntegerField�PositiveIntegerField�PositiveSmallIntegerField� SlugField�SmallAutoField�SmallIntegerField� TextField� TimeField�URLField� UUIDFieldz%(qn_column)s IN (0,1)z%(qn_column)s IS JSONz%(qn_column)s >= 0)rP r\ ra rc rd re )�clob�nclob�blobz= %sz= UPPER(%s)zFLIKE TRANSLATE(%s USING NCHAR_CS) ESCAPE TRANSLATE('\' USING NCHAR_CS)zMLIKE UPPER(TRANSLATE(%s USING NCHAR_CS)) ESCAPE TRANSLATE('\' USING NCHAR_CS)z> %sz>= %sz< %sz<= %s)�exact�iexact�contains� icontains�gt�gte�lt�lter �endswith�istartswith� iendswithzLIKEC %s ESCAPE '\'zLIKEC UPPER(%s) ESCAPE '\')rr rs r rx ry rz z@REPLACE(REPLACE(REPLACE({}, '\', '\\'), '%%', '\%%'), '_', '\_')z'%%' || {} || '%%'z'%%' || UPPER({}) || '%%'z {} || '%%'zUPPER({}) || '%%'z '%%' || {}z'%%' || UPPER({}))rr rs r ry rx rz c �&