L i7IBdZddlZddlZddlmZddlmZddlm Z ddlm Z ddlm Z dd lm Z dd lm Z dd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddl!m"Z"Gdde jFZ$Gdde jJZ&Gdd e&e jNZ(Gd!d"e&Z)Gd#d$eZ*Gd%d&eZ+Gd'd(e j&jXZ-Gd)d*e j&j\Z/Gd+d,e j&j`Z1Gd-d.eZ2Gd/d0e Z3Gd1d2e Z4Gd3d4e jjZ6Gd5d6e jnZ8Gd7d8e jrZ:Gd9d:e jvZ<Gd;dGd=d>e j~Z@Gd?d@e jZBGdAdBe jZDGdCdDeZEGdEdFeeZFGdGdHejZHGdIdJejZJejZLGdKdLeZMGdMdNZNGdOdPeZOGdQdReZPGdSdTeZQeQZRy)Ua .. dialect:: postgresql+pg8000 :name: pg8000 :dbapi: pg8000 :connectstring: postgresql+pg8000://user:password@host:port/dbname[?key=value&key=value...] :url: https://pypi.org/project/pg8000/ .. versionchanged:: 1.4 The pg8000 dialect has been updated for version 1.16.6 and higher, and is again part of SQLAlchemy's continuous integration with full feature support. .. _pg8000_unicode: Unicode ------- pg8000 will encode / decode string values between it and the server using the PostgreSQL ``client_encoding`` parameter; by default this is the value in the ``postgresql.conf`` file, which often defaults to ``SQL_ASCII``. Typically, this can be changed to ``utf-8``, as a more useful default:: # client_encoding = sql_ascii # actually, defaults to database encoding client_encoding = utf8 The ``client_encoding`` can be overridden for a session by executing the SQL: .. sourcecode:: sql SET CLIENT_ENCODING TO 'utf8'; SQLAlchemy will execute this SQL on all new connections based on the value passed to :func:`_sa.create_engine` using the ``client_encoding`` parameter:: engine = create_engine( "postgresql+pg8000://user:pass@host/dbname", client_encoding="utf8" ) .. _pg8000_ssl: SSL Connections --------------- pg8000 accepts a Python ``SSLContext`` object which may be specified using the :paramref:`_sa.create_engine.connect_args` dictionary:: import ssl ssl_context = ssl.create_default_context() engine = sa.create_engine( "postgresql+pg8000://scott:tiger@192.168.0.199/test", connect_args={"ssl_context": ssl_context}, ) If the server uses an automatically-generated certificate that is self-signed or does not match the host name (as seen from the client), it may also be necessary to disable hostname checking:: import ssl ssl_context = ssl.create_default_context() ssl_context.check_hostname = False ssl_context.verify_mode = ssl.CERT_NONE engine = sa.create_engine( "postgresql+pg8000://scott:tiger@192.168.0.199/test", connect_args={"ssl_context": ssl_context}, ) .. _pg8000_isolation_level: pg8000 Transaction Isolation Level ------------------------------------- The pg8000 dialect offers the same isolation level settings as that of the :ref:`psycopg2 ` dialect: * ``READ COMMITTED`` * ``READ UNCOMMITTED`` * ``REPEATABLE READ`` * ``SERIALIZABLE`` * ``AUTOCOMMIT`` .. seealso:: :ref:`postgresql_isolation_level` :ref:`psycopg2_isolation_level` N)ranges)ARRAY)_DECIMAL_TYPES) _FLOAT_TYPES) _INT_TYPES)ENUMINTERVAL) PGCompiler) PGDialect)PGExecutionContext)PGIdentifierPreparer)JSON)JSONB) JSONPathType) _SpaceVector) OIDVECTOR)CITEXT)exc)util) processors)sqltypes) quoted_nameceZdZdZy) _PGStringTN__name__ __module__ __qualname__render_bind_castk/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/pg8000.pyrr}r$rceZdZdZdZy) _PGNumericTcZ|jr_|tvr.tjtj |j S|tvs|tvrytjd|z|tvry|tvs|tvrtjStjd|z)NzUnknown PG numeric type: %d) asdecimalrrto_decimal_processor_factorydecimalDecimal_effective_decimal_return_scalerrrInvalidRequestErrorto_floatselfdialectcoltypes r%result_processorz_PGNumeric.result_processors >>,&!>>OOT%I%IN*g.C--1G;,&N*g.C!***--1G;r$Nrr r!r"r5r#r$r%r(r(s r$r(ceZdZdZdZy)_PGFloatfloatTNrr r!__visit_name__r"r#r$r%r8r8s Nr$r8ceZdZdZy)_PGNumericNoBindcyNr#)r2r3s r%bind_processorz_PGNumericNoBind.bind_processorr$N)rr r!r@r#r$r%r=r=sr$r=ceZdZdZdZy)_PGJSONTcyr?r#r1s r%r5z_PGJSON.result_processorrAr$Nr6r#r$r%rCrC r$rCceZdZdZdZy)_PGJSONBTcyr?r#r1s r%r5z_PGJSONB.result_processorrAr$Nr6r#r$r%rGrGrEr$rGceZdZdZy)_PGJSONIndexTypectd)Nzshould not be here)NotImplementedErrorr2dbapis r%get_dbapi_typez_PGJSONIndexType.get_dbapi_types!"677r$Nrr r!rOr#r$r%rJrJs8r$rJceZdZdZdZy)_PGJSONIntIndexTypejson_int_indexTNr:r#r$r%rRrR %Nr$rRceZdZdZdZy)_PGJSONStrIndexTypejson_str_indexTNr:r#r$r%rVrVrTr$rVc eZdZy)_PGJSONPathTypeNrr r!r#r$r%rYrYr$rYceZdZdZy)_PGEnumc|jSr?)UNKNOWNrMs r%rOz_PGEnum.get_dbapi_types }}r$NrPr#r$r%r]r]sr$r]c&eZdZdZdZedZy) _PGIntervalTc|jSr?r rMs r%rOz_PGInterval.get_dbapi_types ~~r$c .t|jS)N) precision)rasecond_precision)clsintervalkws r%adapt_emulated_to_nativez$_PGInterval.adapt_emulated_to_nativesX%>%>??r$N)rr r!r"rO classmethodrir#r$r%raras#@@r$raceZdZdZy) _PGTimeStampTNrr#r$r%rlrlr&r$rlceZdZdZy)_PGDateTNrr#r$r%rnrnr&r$rnceZdZdZy)_PGTimeTNrr#r$r%rprpr&r$rpceZdZdZy) _PGIntegerTNrr#r$r%rrrrr&r$rrceZdZdZy)_PGSmallIntegerTNrr#r$r%rtrtr&r$rtc eZdZy) _PGNullTypeNrZr#r$r%rvrvr[r$rvceZdZdZy) _PGBigIntegerTNrr#r$r%rxrxr&r$rxceZdZdZy) _PGBooleanTNrr#r$r%rzrzr&r$rzceZdZdZy)_PGARRAYTNrr#r$r%r|r|r&r$r|c eZdZy) _PGOIDVECTORNrZr#r$r%r~r~r[r$r~ceZdZdZdZy) _Pg8000Rangec>|jjfd}|S)Nct|tjr3|j|j|j |j }|Sr?) isinstancerRangelowerupperboundsempty)value pg8000_Ranges r%to_rangez-_Pg8000Range.bind_processor..to_ranges;%.$KKellEKKLr$rNr)r2r3rrs @r%r@z_Pg8000Range.bind_processors}}**  r$c d}|S)Nc|Atj|j|j|j|j }|S)Nrrrrrrris_emptyrs r%rz/_Pg8000Range.result_processor..to_ranges9  KKKK <<..  Lr$r#)r2r3r4rs r%r5z_Pg8000Range.result_processors r$Nrr r!r@r5r#r$r%rrs   r$rceZdZdZdZy)_Pg8000MultiRangec>|jjfd}|S)Nc t|tryg}|D]p}t|tjrC|j |j |j |j|j`|j |r|S|Sr?) rlistrrappendrrrr)rmrvrs r% to_multirangez7_Pg8000MultiRange.bind_processor..to_multirange#sr%&%A!!V\\2 (!''188QWWM ! %  r$r)r2r3rrs @r%r@z _Pg8000MultiRange.bind_processor s}}**  r$c d}|S)Nc@|ytjd|DS)Nc3K|]E}tj|j|j|j|j Gyw)rNr).0rs r% zL_Pg8000MultiRange.result_processor..to_multirange..8sA)LL)sA A )r MultiRangers r%rz9_Pg8000MultiRange.result_processor..to_multirange4s,}(()# )r$r#)r2r3r4rs r%r5z"_Pg8000MultiRange.result_processor3s r$Nrr#r$r%rrs & r$rceZdZdZdZy)PGExecutionContext_pg8000cdtt|dddttdd}t|jj |S)Nc__)hexid_server_side_idServerSideCursor_dbapi_connectioncursor)r2idents r%create_server_side_cursorz3PGExecutionContext_pg8000.create_server_side_cursorFsF D]12.O4E0Fqr0JK 6 6 = = ?GGr$c|jsyyr?)compiledr2s r%pre_execz"PGExecutionContext_pg8000.pre_execJs}} r$N)rr r!rrr#r$r%rrEs Hr$rc|eZdZdZdZedZedZedZddZ dZ d Z dd Z d Z d Zd ZddZy)rTc ||_||_yr?)rr)r2rrs r%__init__zServerSideCursor.__init__Rs  r$c.|jjSr?)r connectionrs r%rzServerSideCursor.connectionVs{{%%%r$c.|jjSr?)rrowcountrs r%rzServerSideCursor.rowcountZs{{###r$c.|jjSr?)r descriptionrs r%rzServerSideCursor.description^s{{&&&r$Ncld|jzdz|z}|jj||||S)NzDECLARE z NO SCROLL CURSOR FOR )stream)rrexecute)r2 operationargsrops r%rzServerSideCursor.executebs9 $** $'? ?) K BV4 r$c>|jj|||Sr?)r executemany)r2r param_setss r%rzServerSideCursor.executemanygs  :6 r$c|jjd|jz|jjS)NzFETCH FORWARD 1 FROM )rrrfetchoners r%rzServerSideCursor.fetchoneks1 3djj@A{{##%%r$c||jS|jjdtt |zdz|j z|jjS)NzFETCH FORWARD z FROM )fetchallrrstrintr)r2nums r% fetchmanyzServerSideCursor.fetchmanyosX ;==? " KK   3s3x=08;djjH ;;'') )r$c|jjd|jz|jjS)NzFETCH FORWARD ALL FROM )rrrrrs r%rzServerSideCursor.fetchallxs1 5 BC{{##%%r$c|jjd|jz|jjy)NzCLOSE )rrrclosers r%rzServerSideCursor.close|s- Htzz12 r$c6|jj|yr?)r setinputsizes)r2sizess r%rzServerSideCursor.setinputsizess! !!5)r$cyr?r#)r2sizecolumns r% setoutputsizezServerSideCursor.setoutputsizes r$)r#Nr?)rr r! server_siderpropertyrrrrrrrrrrrr#r$r%rrOspK&&$$'' &*&* r$rceZdZdZy)PGCompiler_pg8000c ~|j|jfi|dz|j|jfi|zS)Nz %% )processleftright)r2binaryoperatorrhs r%visit_mod_binaryz"PGCompiler_pg8000.visit_mod_binarysB DLL + + dll6<<.2. / r$N)rr r!rr#r$r%rrs r$rceZdZdZy)PGIdentifierPreparer_pg8000cDtj|g|i|d|_y)NF)rr_double_percents)r2rkwargss r%rz$PGIdentifierPreparer_pg8000.__init__s"%%de ejBe"e#e$e%e%ej:jLe'ej:jPe)ej:jTe+ej:jXe-ej\e/e0e/ejbe2ejbe2ejfe4iejje6ejne8ejre:ejve<ejze>ej~e@eAeBeCjeEeCjeEeCjeEeCjeEeCjeEeCjeEeCjeLeCjeLeCjeLeCjeLeCjeLeCjeLiZddZRejdZTeUdZVdZWd ZXd ZYd ZZd e[fd Z\dZ]dZ^dZ_dZ`dZadZbdZc ddZd ddZedZfdZgejdZhy)PGDialect_pg8000pg8000TformatNc tj|fi|||_|jdkr t d|j r t dy)N)rz$pg8000 1.16.6 or greater is requiredznThe pg8000 dialect does not fully implement ipaddress type handling; INET is supported by default, CIDR is not)r rclient_encoding_dbapi_versionrL_native_inet_types)r2rrs r%rzPGDialect_pg8000.__init__sW4*6*.    +%&LM M  " "%  #r$c|jr`t|jdrJttjd|jj Dcgc] }t |c}Sycc}w)N __version__z(\d+)(?:[-\.]?|$))crr)rNhasattrtuplerefindallrr)r2xs r%rzPGDialect_pg8000._dbapi_versionsa ::'$**m< ZZ,djj.D.DF  sA.ctdS)Nr) __import__)rfs r% import_dbapizPGDialect_pg8000.import_dbapis (##r$c|jd}d|vrt|d|d<|j|jg|fS)Nuser)usernameport)translate_connect_argsrupdatequery)r2urloptss r%create_connect_argsz$PGDialect_pg8000.create_connect_argssH))6): T>tF|,DL CIIDzr$cxt||jjrdt|vrydt|vS)Nz network errorTzconnection is closed)rrNInterfaceErrorr)r2errs r% is_disconnectzPGDialect_pg8000.is_disconnects> a22 33 L 9 &Q//r$cy)N) AUTOCOMMITzREAD COMMITTEDzREAD UNCOMMITTEDzREPEATABLE READ SERIALIZABLEr#)r2dbapi_connections r%get_isolation_level_valuesz+PGDialect_pg8000.get_isolation_level_valuess r$c|jdd}|dk(rd|_yd|_|j}|jd||jd|j y)Nr r TFz;SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL COMMIT)replace autocommitrrr)r2rlevelrs r%set_isolation_levelz$PGDialect_pg8000.set_isolation_levelsl c3' L *.  '*/  '%,,.F NN##('+  NN8 $ LLNr$returnc,t|jSr?)boolr)r2 dbapi_conns r%detect_autocommit_settingz*PGDialect_pg8000.detect_autocommit_settingsJ))**r$c|j} |jd|rdndz|jd|jy#|jwxYw)N-SET SESSION CHARACTERISTICS AS TRANSACTION %sz READ ONLYz READ WRITErrrrr2rrrs r% set_readonlyzPGDialect_pg8000.set_readonly"sQ""$  NN?"';\;  NN8 $ LLNFLLN )A Ac|j} |jd|jd}|j|dk(S#|jwxYw)Nzshow transaction_read_onlyronrrrrr2rrvals r% get_readonlyzPGDialect_pg8000.get_readonly-sS""$  NN7 8//#A&C LLNd{ LLN $A Ac|j} |jd|rdndz|jd|jy#|jwxYw)Nr DEFERRABLEzNOT DEFERRABLErrr s r%set_deferrablezPGDialect_pg8000.set_deferrable7sS""$  NN?#(<.>@  NN8 $ LLNFLLNr"c|j} |jd|jd}|j|dk(S#|jwxYw)Nzshow transaction_deferrablerr$r%r&s r%get_deferrablezPGDialect_pg8000.get_deferrableBsS""$  NN8 9//#A&C LLNd{ LLNr)c|j}|jd|jddd|jd|jy)NzSET CLIENT_ENCODING TO ''z''r)rrrr)r2rrrs r%_set_client_encodingz%PGDialect_pg8000._set_client_encodingLsS!((*(''T2)   x  r$c@|jjd|dfyNr)r tpc_beginr2rxids r%do_begin_twophasez"PGDialect_pg8000.do_begin_twophaseVs''C 5r$c8|jjyr?)r tpc_preparer6s r%do_prepare_twophasez$PGDialect_pg8000.do_prepare_twophaseYs))+r$c@|jjd|dfyr3)r tpc_rollbackr2rr7 is_preparedrecovers r%do_rollback_twophasez%PGDialect_pg8000.do_rollback_twophase\s **AsB<8r$c@|jjd|dfyr3)r tpc_commitr>s r%do_commit_twophasez#PGDialect_pg8000.do_commit_twophaseas ((!S"6r$cb|jjDcgc]}|d c}Scc}w)Nr)r tpc_recover)r2rrows r%do_recover_twophasez$PGDialect_pg8000.do_recover_twophasefs)","7"7"C"C"EF3AFFFs ,c*gd}j|jfd}j|jdurd}j|jrfd}j|t dkDrfd}|Sy)NcL|jt|jt<yr?)py_typesrrconns r% on_connectz/PGDialect_pg8000.on_connect..on_connectls)-s);DMM+ &r$c>j|jyr?)r1rrMr2s r%rNz/PGDialect_pg8000.on_connect..on_connectss))$0D0DEr$FcP|jdd|jddy)Niec|Sr?r#ss r%zAPGDialect_pg8000.on_connect..on_connect..|r$ic|Sr?r#rSs r%rUzAPGDialect_pg8000.on_connect..on_connect..rVr$)register_in_adapterrLs r%rNz/PGDialect_pg8000.on_connect..on_connectzs$((k:((k:r$cv|jdj|jdjy)Nri)rX_json_deserializerrPs r%rNz/PGDialect_pg8000.on_connect..on_connects1((d.E.EF((t/F/FGr$rc$D] }|| yr?r#)rMfnfnss r%rNz/PGDialect_pg8000.on_connect..on_connectsBtHr$)rrrr[len)r2rNr^s` @r%rNzPGDialect_pg8000.on_connectis < :    + F JJz "  " "e + ; JJz "  " " H JJz " s8a<  r$cy)N;r#rs r%_dialect_specific_select_onez-PGDialect_pg8000._dialect_specific_select_onesr$r?)TF)irr r!driversupports_statement_cachesupports_unicode_statementssupports_unicode_bindsdefault_paramstylesupports_sane_multi_rowcountrexecution_ctx_clsrstatement_compilerrpreparersupports_server_side_cursorsr"description_encodingr update_copyr colspecsrStringrNumericr=Floatr8rrCBooleanrzNullTypervrrGrrrY JSONIndexTyperJJSONIntIndexTyperRJSONStrIndexTyperVIntervalrar DateTimerlDaternTimerpIntegerrr SmallIntegerrt BigIntegerrxEnumr]rr|rr~r INT4RANGEr INT8RANGENUMRANGE DATERANGETSRANGE TSTZRANGEINT4MULTIRANGErINT8MULTIRANGE NUMMULTIRANGEDATEMULTIRANGE TSMULTIRANGETSTZMULTIRANGErmemoized_propertyrrjrrr rrrrr!r(r,r.r1r8r;rArDrHrNrbr#r$r%rrs F#"&!!#' 1**H#'   t% OOY%   .%  NNH%  MM7 %   j %   { %  8%  F%  MM & &%  MM ' ')9%  MM * *,?%  MM * *,?%    {%  k%    |%   |!% " MM7#% $ MM7%% &   j'% (  ! !?)% *   +% , MM7-% . NNH/% 0 |1% 2   l3% 4   l5% 6 OO\7% 8   l9% : NNL;% <   l=% >  ! !#4?% @  ! !#4A% B  "3C% D  ! !#4E% F   !2  ! !#4I% (HT      $$0  +t+  6,:?9 :?7 G-^ r$r)S__doc__r,rr4rarrayrPGARRAYbaserrrr r r r rrjsonrrr pg_catalogrrtypesrrrenginersqlr sql.elementsrrprrqr(rrr8r=rCrGrurJrvrRrwrVrYr]raryrlrzrnr{rpr|rrr}rtrtrvr~rxrsrzr|r~AbstractSingleRangeImplrAbstractMultiRangeImplrcounterrrrrrrr3r#r$r%rs7Xr # $&$! '!!8z8>> z du8x}}228 (--88 (--88  l d @(@8$$hmmhmm!!h++ (## H''!!w < 6116 55 F$,,. 25 5 p  &"6& DyDN r$