+
    5)i                     f    R t ^ RIHtHtHtHt ^ RIt^ RIHtH	t	 ^ RI
Ht ^ RIHt  ! R R4      tR# )u   
MySQLModel — thin wrapper around mysql-connector-python.
Reads connection settings from Flask app config (MYSQL_DATABASES['default']).
)DictListOptionalTupleN)Errorpooling)current_app)
get_loggerc                      a  ] tR t^t o RtRV 3R lR lltV 3R lR ltR tRV 3R lR	 lltV 3R
 lR lt	R t
RtV tR# )
MySQLModelzIMySQL database access layer used by DatabaseService and ReportController.c                    < V ^8  d   QhRS[ /# )   db_name)str)format__classdict__s   "CD:\Projects\python\client-ideal-oms_pyapi\app\models\mysql_model.py__annotate__MySQLModel.__annotate__   s     0 0 0    c                2    Wn         \        R 4      V n        R# )mysql_modelN)r   r	   logger)selfr   s   &&r   __init__MySQLModel.__init__   s     /r   c                    < V ^8  d   QhRS[ /# r   returnr   )r   r   s   "r   r   r      s     
 
T 
r   c                    \         P                  R ,          V P                  ,          pRVR,          RVR,          RVR,          RVR,          RVR,          RRR	R
R^
R^
/	# )MYSQL_DATABASEShostportdatabaseuserusernamepasswordcharsetutf8mb4
autocommitTconnection_timeoutconnect_timeout)r   configr   )r   dbs   & r   _get_configMySQLModel._get_config   sg     124<<@BvJBvJ:BzN:y$ "r

 
	
r   c                ^    \         P                  P                  ! R/ V P                  4       B # )N )mysql	connectorconnectr/   r   s   &r   _get_connectionMySQLModel._get_connection#   s#    &&<)9)9);<<r   Nc                L   < V ^8  d   QhRS[ RS[S[,          RS[S[,          /# )r   queryparamsr   )r   r   r   r   r   )r   r   s   "r   r   r   &   s+      3  4PT: r   c                   V P                  4       pRp VP                  RR7      pVP                  W4       VP                  4       pTV'       d   VP	                  4        VP	                  4        #   \
         d%   pT P                  P                  RT 24       h Rp?ii ; i  T'       d   TP	                  4        TP	                  4        i ; i)zCExecute a SELECT / DML query and return results as a list of dicts.NT)
dictionaryzMySQL query error: )r7   cursorexecutefetchallcloser   r   error)r   r:   r;   connr>   resultses   &&&    r   execute_queryMySQLModel.execute_query&   s    ##%	[[D[1FNN5)oo'G
 JJL  	KK 3A378	 JJLs#   4A1 1B <BB  B# #*Cc                    < V ^8  d   QhRS[ /# r   r   )r   r   s   "r   r   r   8   s       r   c                ~   Rp V P                  4       pVP                  RR7       RR/V'       d   VP                  4        # #   \         dQ   pT P                  P                  RT 24       RRR\        T4      /u Rp?T'       d   TP                  4        # # Rp?ii ; i  T'       d   TP                  4        i i ; i)	z+Ping the database and return a status dict.NF)	reconnectstatus	connectedzMySQL connection test failed: rB   message)r7   pingrA   r   r   warningr   )r   rC   rE   s   &  r   test_connectionMySQLModel.test_connection8   s    	'')DIII&k* 

 	  	:KK"@ DEgy#a&99

 		: 

 s/   %A B,B:B;B! BB! !B<c                    R # Nr2   r6   s   &r   cleanupMySQLModel.cleanupH   s    r   )r   r   )defaultrS   )__name__
__module____qualname____firstlineno____doc__r   r/   r7   rF   rP   rT   __static_attributes____classdictcell__)r   s   @r   r   r      s?     S0 0
 
= $   r   r   )r[   typingr   r   r   r   mysql.connectorr3   r   r   flaskr   app.utils.helpersr	   r   r2   r   r   <module>rb      s(   
 / .  *  (; ;r   