https://t.me/AnonymousX5
Server : Apache
System : Linux cvar2.toservers.com 3.10.0-962.3.2.lve1.5.73.el7.x86_64 #1 SMP Wed Aug 24 21:31:23 UTC 2022 x86_64
User : njnconst ( 1116)
PHP Version : 8.4.18
Disable Function : NONE
Directory :  /lib/python2.7/site-packages/south/db/sql_server/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyc
�
��Rc@s�ddlmZmZmZddlmZddlmZddlmZddl	m
Z
ddlmZm
Z
mZddlmZddlmZydd	lmZWn!ek
r�dd
lmZnXddlmZde
jfd
��YZdS(i����(tdatetdatetimettime(twarn(tmodels(tfields(tgeneric(tdelete_column_constraintstinvalidate_table_constraintstcopy_column_constraints(tConstraintDropped(tstring_types(t
smart_text(t
smart_unicode(tno_styletDatabaseOperationscBsbeZdZdZdZdZdZdZeZ	dZ
dZdZd	d
Z
dZdZeZed
��Zd�Zed�Zeeed��Zd�Zd�Zd�Zd�Zd!d�Zd�Zeed��Zed��Z ed��Z!d�Z"eed��Z#e$ed���Z%ed��Z&d�Z'd�Z(ed ��Z)RS("sR
    django-pyodbc (sql_server.pyodbc) implementation of database operations.
    tpyodbcsALTER TABLE %s ADD %s;s ALTER COLUMN %(column)s %(type)ss%ALTER COLUMN %(column)s %(type)s NULLs)ALTER COLUMN %(column)s %(type)s NOT NULLs+DROP INDEX %(index_name)s ON %(table_name)ss>ALTER TABLE %(table_name)s DROP CONSTRAINT %(constraint_name)ssALTER TABLE %s DROP COLUMN %ss4ALTER TABLE %(table)s ADD CONSTRAINT %(constraint)s s.FOREIGN KEY (%(column)s) REFERENCES %(target)ssHALTER TABLE %(table)s ADD CONSTRAINT %(constraint)s UNIQUE (%(columns)s)tdboc
Cs|j|�|j|�}}xK|j||�D]7}i|d6|d6}|j|}|j|g�q2WxK|j||�D]7}i|d6|d6}|j|}|j|g�q�W|j||�}	|	r�d||	f}|j|g�n|j|j||fg�dS(Nt
table_nametconstraint_namet
index_namesALTER TABLE [%s] %s(t
quote_namet_find_constraints_for_columntdrop_constraint_stringtexecutet_find_indexes_for_columntdrop_index_stringtdrop_column_default_sqltdelete_column_string(
tselfRtnametq_table_nametq_nametconsttparamstsqltindtdrop_default((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyt
delete_column-s

cCs=d}|j|||fg�}g|D]}|d^q)S(s=Find the indexes that apply to a column, needed when deletings�
        SELECT si.name, si.id, sik.colid, sc.name
        FROM dbo.sysindexes si WITH (NOLOCK)
        INNER JOIN dbo.sysindexkeys sik WITH (NOLOCK)
            ON  sik.id = si.id
            AND sik.indid = si.indid
        INNER JOIN dbo.syscolumns sc WITH (NOLOCK)
            ON  si.id = sc.id
            AND sik.colid = sc.colid
        WHERE si.indid !=0
            AND si.id = OBJECT_ID('%s')
            AND sc.name = '%s'
        i(R(RRRR#tidxti((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyRFscCssd}|jd�}|j�}|j|||||g�}|r`g|D]}|d^qLSi}	x|D]�}|d \}
}|dks�|dkr�|	j|
|gf�}d}|j|||||
g�}
|djd	�|
D��nl|d
kr||df}nM|dkrQ|
|	kr;td��qa||d
d!f}ntd|��||	|
<qmW|	S(s�
        Find the constraints that apply to a column, needed when deleting. Defaults not included.
        This is more general than the parent _constraints_affecting_columns, as on MSSQL this
        includes PK and FK constraints.
        s�
         SELECT CC.[CONSTRAINT_NAME]
              ,TC.[CONSTRAINT_TYPE]
              ,CHK.[CHECK_CLAUSE]
              ,RFD.TABLE_SCHEMA
              ,RFD.TABLE_NAME
              ,RFD.COLUMN_NAME
              -- used for normalized names
              ,CC.TABLE_NAME
              ,CC.COLUMN_NAME
          FROM [INFORMATION_SCHEMA].[TABLE_CONSTRAINTS] TC
          JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE CC
               ON TC.CONSTRAINT_CATALOG = CC.CONSTRAINT_CATALOG 
              AND TC.CONSTRAINT_SCHEMA = CC.CONSTRAINT_SCHEMA
              AND TC.CONSTRAINT_NAME = CC.CONSTRAINT_NAME
          LEFT JOIN INFORMATION_SCHEMA.CHECK_CONSTRAINTS CHK
               ON CHK.CONSTRAINT_CATALOG = CC.CONSTRAINT_CATALOG
              AND CHK.CONSTRAINT_SCHEMA = CC.CONSTRAINT_SCHEMA
              AND CHK.CONSTRAINT_NAME = CC.CONSTRAINT_NAME
              AND 'CHECK' = TC.CONSTRAINT_TYPE
          LEFT JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS REF
               ON REF.CONSTRAINT_CATALOG = CC.CONSTRAINT_CATALOG
              AND REF.CONSTRAINT_SCHEMA = CC.CONSTRAINT_SCHEMA
              AND REF.CONSTRAINT_NAME = CC.CONSTRAINT_NAME
              AND 'FOREIGN KEY' = TC.CONSTRAINT_TYPE
          LEFT JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE RFD
               ON RFD.CONSTRAINT_CATALOG = REF.UNIQUE_CONSTRAINT_CATALOG
              AND RFD.CONSTRAINT_SCHEMA = REF.UNIQUE_CONSTRAINT_SCHEMA
              AND RFD.CONSTRAINT_NAME = REF.UNIQUE_CONSTRAINT_NAME
          WHERE CC.CONSTRAINT_CATALOG = CC.TABLE_CATALOG
            AND CC.CONSTRAINT_SCHEMA = CC.TABLE_SCHEMA
            AND CC.TABLE_CATALOG = %s
            AND CC.TABLE_SCHEMA = %s
            AND CC.TABLE_NAME = %s
            AND CC.COLUMN_NAME = %s 
        RiisPRIMARY KEYtUNIQUEs4
                SELECT COLUMN_NAME
                FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE RFD
                WHERE RFD.CONSTRAINT_CATALOG = %s
                  AND RFD.CONSTRAINT_SCHEMA = %s
                  AND RFD.TABLE_NAME = %s
                  AND RFD.CONSTRAINT_NAME = %s
                icss|]\}|VqdS(N((t.0tcol((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pys	<genexpr>�stCHECKsFOREIGN KEYs.Multiple-column foreign keys are not supportediis-Don't know how to handle constraints of type (t_get_settingt_get_schema_nameRt
setdefaulttextendtNotImplementedError(RRRt
just_namesR#tdb_nametschema_namettabletrtallt	cons_namettypetconstcolumns((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyRZs.*
cCs�|j|�|s�|j}||j��}||�}dj||g�}	y|j||�Wntk
rvnX|j||t�}
xO|
j�D]>}t	d|	d||��}|j
|}
|j|
g�q�Wntt
|�j||||dt�}|s�x	|
j�D]�\}\}}t	d|	d||��}|dkr}djt||��|d	<|j|}
n�|d
kr�djt||��|d	<|j|}
nN|dkr�qn<|dkr�ttd
|||��qntdt��|j|
g�qW|jr�|jr�|j|j||j|jjjj|jjjj|jj �j��|j!d|�}x9|j"�j#j$||t%��D]}|j|�q�Wq�n|S(s�
        Alters the given column name so it will match the given field.
        Note that conversion between the two by the database must be possible.
        Will not automatically add _id by default; to have this behavour, pass
        explicit_name=False.

        @param table_name: The name of the table to add the column to
        @param name: The name of the column to alter
        @param field: The new field definition to use
        t.RRtignore_constraintsR5t
constraintR)s, R;sPRIMARY KEYsFOREIGN KEYR,sCHECK s-Don't know how to handle constraints of type tFakeModelForIndexCreation(&t_fix_field_definitionRR.tjointdelete_foreign_keyt
ValueErrorRtFalsetkeystdictRRtsuperRtalter_columntTruetitemstmaptcreate_unique_sqltcreate_primary_key_stringRR
R1R9treltsupports_foreign_keystforeign_key_sqltcolumnttot_metatdb_tablet	get_fieldt
field_namet
mock_modelt_get_connectiontcreationtsql_indexes_for_fieldR(RRRtfieldt
explicit_nameR=tqntschttabR5tconstraintsR>R"R#tret_valtcnametctypetargstmodeltstmt((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyRH�sZ
	

'%(cCsE|j|d�}|j||�}|rA|j|gf�ndS(sBSubcommand of alter_column that sets default values (overrideable)RN(RRtappend(RR[RR"tsqlsRR%((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyt_alter_set_defaults�scCsj|j�}|j|d|�}t|t�r:t|�St|tttf�r\|j�St	|�SdS(Nt
connection(
RXtget_db_prep_savet
isinstanceRRRRRt	isoformattstr(RR[tvaluetconn((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyt_value_to_unquoted_literal�s

cCs<t|tttf�r"|j�Stt|�j|�SdS(N(RlRRRRmRGRt_default_value_workaround(RRo((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyRr
s
cCsd|jdd�dS(Nt's''(treplace(Rts((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyt
_quote_stringscCsTd}|j|||fg�}|rP|drP|ddrPd|ddSdS(s,MSSQL specific drop default, which is a pains�
        SELECT object_name(cdefault)
        FROM syscolumns
        WHERE id = object_id('%s')
        AND name = '%s'
        isDROP CONSTRAINT %sN(RtNone(RRRR R#R:((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyRs
cCsXt|tjtjf�rT|jtkr6d|_n|jtkrTd|_qTndS(Nii(RlRtBooleanFieldtNullBooleanFieldtdefaultRIRD(RR[((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyR@"s
cCs�|j|�|j|||�}|r�|j|�|f}|j|}|j|�|r�|jdk	r�tj|_|j	|||�q�ndS(sX
        Adds the column 'name' to the table 'table_name'.
        Uses the 'field' paramater, a django.db.models.fields.Field instance,
        to generate the necessary sql

        @param table_name: The name of the table to add the column to
        @param name: The name of the column to add
        @param field: The field to use
        N(
R@t
column_sqlRtadd_column_stringRRzRwRtNOT_PROVIDEDR%(RRRR[tkeep_defaultR#R"((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyt
add_column,s
	

cCsS|j||�}|rO|j|�}djd||g�}|j|�ndS(Nt sALTER TABLE(RRRAR(RRRR[tfragmentR#((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyR%Gs
cCsAx!|D]\}}|j|�qWtt|�j||�dS(N(R@RGRtcreate_table(RRt
field_defst_tf((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyR�PscCs:d}|jd�}|j�}|j||||g�S(sPMSSQL does not support cascading FKs when dropping tables, we need to implement.s�
        SELECT FKTU.TABLE_SCHEMA as REFING_TABLE_SCHEMA,
               FKTU.TABLE_NAME as REFING_TABLE_NAME,
               FK.[CONSTRAINT_NAME] as FK_NAME
        FROM [INFORMATION_SCHEMA].[REFERENTIAL_CONSTRAINTS] FK
        JOIN [INFORMATION_SCHEMA].[CONSTRAINT_TABLE_USAGE] UCTU
          ON FK.UNIQUE_CONSTRAINT_CATALOG = UCTU.CONSTRAINT_CATALOG and
             FK.UNIQUE_CONSTRAINT_NAME = UCTU.CONSTRAINT_NAME and
             FK.UNIQUE_CONSTRAINT_SCHEMA = UCTU.CONSTRAINT_SCHEMA
        JOIN [INFORMATION_SCHEMA].[CONSTRAINT_TABLE_USAGE] FKTU
          ON FK.CONSTRAINT_CATALOG = FKTU.CONSTRAINT_CATALOG and
             FK.CONSTRAINT_NAME = FKTU.CONSTRAINT_NAME and
             FK.CONSTRAINT_SCHEMA = FKTU.CONSTRAINT_SCHEMA
        WHERE FK.CONSTRAINT_CATALOG = %s
          AND UCTU.TABLE_SCHEMA = %s -- REFD_TABLE_SCHEMA
          AND UCTU.TABLE_NAME = %s -- REFD_TABLE_NAME
        R(R-R.R(RRR#R3R4((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyt_find_referencing_fksYsc	Cs�|r�|j|�}xs|D]k\}}}djt|j||g��}td|d|j|��}|j|}|j|g�qWt}ntt	|�j
||�dS(s1
        Deletes the table 'table_name'.
        R<RRN(R�RARKRRFRRRDRGRtdelete_table(	RRtcascadetrefingtschmeaR5R>R"R#((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyR�us!
	cCsF||krdS||j|�|j|�f}|jd|�dS(s~
        Renames the column of 'table_name' from 'old' to 'new'.
        WARNING - This isn't transactional on MSSQL!
        Ns$EXEC sp_rename '%s.%s', %s, 'COLUMN'(RR(RRtoldtnewR"((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyt
rename_column�s!cCsC||krdS|j|�|j|�f}|jd|�dS(sz
        Renames the table 'old_table_name' to 'table_name'.
        WARNING - This isn't transactional on MSSQL!
        NsEXEC sp_rename %s, %s(RR(Rtold_table_nameRR"((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pytrename_table�scCs|jt|�S(N(t"_db_positive_type_for_alter_columnR(RR[((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyt_db_type_for_alter_column�scCs|jt||||�S(N(t_alter_add_positive_checkR(RR[RR"Rh((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyt_alter_add_column_mods�scCs�tt|�j||�d}|j�}|j||||g�}|j}xDd�|D�D]2}|jd||�||�||�f�q`WdS(Ns�
            SELECT i.name -- s.name, t.name,  c.name
            FROM sys.tables t
            INNER JOIN sys.schemas s ON t.schema_id = s.schema_id
            INNER JOIN sys.indexes i ON i.object_id = t.object_id
            INNER JOIN sys.index_columns ic ON ic.object_id = t.object_id
                                            AND ic.index_id = i.index_id
            INNER JOIN sys.columns c ON c.object_id = t.object_id 
                                     AND ic.column_id = c.column_id
            WHERE i.is_unique=0 AND i.is_primary_key=0 AND i.is_unique_constraint=0
              AND s.name = %s
              AND t.name = %s
              AND c.name = %s
            css#|]}|dr|dVqdS(iN((R*R(((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pys	<genexpr>�ssDROP INDEX %s on %s.%s(RGRRBR.RR(RRRQtfind_index_sqltschematindexesR]tindex((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyRB�s	N(*t__name__t
__module__t__doc__tbackend_nameR|talter_string_set_typetalter_string_set_nulltalter_string_drop_nullRDtallows_combined_altersRRRtcreate_foreign_key_sqlRLtdefault_schema_namethas_booleansRR&RRIRRRHRiRqRrRvRwRR@RR%R�R�R�R	R�R�R�R�RB(((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyRsN	MK					
			
		N(RRRtwarningsRt	django.dbRtdjango.db.modelsRtsouth.dbRtsouth.db.genericRRR	tsouth.exceptionsR
tsouth.utils.py3Rtdjango.utils.encodingRtImportErrorR
tdjango.core.management.colorRR(((s>/usr/lib/python2.7/site-packages/south/db/sql_server/pyodbc.pyt<module>s


https://t.me/AnonymousX5 - 2025