Files
controller-wisetopdataserver/python/biopro/server/__pycache__/database.cpython-37.opt-2.pyc
T

106 lines
11 KiB
Plaintext
Raw Normal View History

2021-12-20 14:52:55 +08:00
B
2021-12-22 14:29:56 +08:00
ò0Àa«Bã@ddlZddlZddlZddlZddlZddlmZmZ ddl
2021-12-20 14:52:55 +08:00
m Z m Z m
Z
2021-12-22 14:29:56 +08:00
ddlmZddlZddlmZmZmZddlmZddlmZddlZdd lmZmZddlZdd
2021-12-20 14:52:55 +08:00
lmZm Z d Z!e
e"d œd
dZ#GdddeƒZ$dS)éN)ÚloadsÚdumps)ÚDictÚOptionalÚAny)Údatetime)ÚRecordingMetaFileÚ
RecordingFileÚ
RecordingMini)Ú JSON_OBJECTé)Ú ServerThread)ÚProcessÚQueue)ÚThreadPoolExecutorÚ as_completedF)ÚreturncCs t|ddS)N)ú:)Ú
separators)Ú_json_stringify)r©rú;/home/pi/wisetopdataserver/python/biopro/server/database.pyÚjson_stringifysrcs2eZdZd2edœfdd
ZeedœddƒZeedœdd „ƒZeedœd
d ƒZ eedœd d
ƒZ
ddœddZ ddœddZ ddœddZ
ddœddZeddœddZddœddZeedœddZd3edœd d!„Zd4d"d#„Zd5d$d%„Zd&d'„Zedœd(d)„Zd*d+„Zd,d-„Zd.d/„Zedœd0d1„ZZS)6ÚDataBaseProcessúDatabase-Process)Ú client_idctt|ƒj|dd|_d|_d|_d|_tjj j
|_ tjj j |_
d|_d|_||_tdd|_d|_d|_d|_||_||_||_d|_dS) N)Únamez 127.0.0.1ÚpostgresÚbioproÚBioProControlBoxé)Ú max_workersF)ÚsuperrÚ__init__Ú_db_hostÚ_db_nameÚ_db_userÚ _db_passwordr ÚserverÚ _identifyÚAPI_SERVER_HOSTÚ _api_hostÚAPI_SERVER_PORTÚ _api_portÚ
_api_tokenZ _api_headerÚ log_verboserÚ _executorZ_psql_multi_threadZ_psql_conn_poolÚ
_psql_connÚ _queue_dbÚ _queue_dsÚ _queue_errorÚ _is_close)Úselfrr1Zqueue_dbZqueue_dsZ queue_errorr)Ú __class__rrr%'s$   zDataBaseProcess.__init__)rcCs|jS)N)r&)r8rrrÚdb_hostAszDataBaseProcess.db_hostcCs|jS)N)r-)r8rrrÚapi_hostEszDataBaseProcess.api_hostcCs|jS)N)r/)r8rrrÚapi_portIszDataBaseProcess.api_portcCs|jS)N)r0)r8rrrÚ api_tokenMszDataBaseProcess.api_tokenNcCs| ¡| ¡dS)N)ÚsetupÚroutine)r8rrrÚrunQszDataBaseProcess.runcCsf| d¡d |j|j|j|j¡}yt |¡|_Wn| d¡YnX| d|j|j¡d|_ dS)NzDataBaseProcess setupz)host={0} user={1} dbname={2} password={3}zcan not connect to databasezconnect to DB F)
r1Úformatr&r(r'r)Úpsycopg2Úconnectr3r7)r8Z conn_inforrrr>Us
zDataBaseProcess.setupc
Cxò|jdkròd}y|j ¡}Wntk
r8d|_YnX|dk rî|d}|dd}|ddkr¬y|j |j||¡Wtk
}z| d||¡Wdd}~XYqîXnBy| ||¡Wn0tk
}z| d||¡Wdd}~XYnX~qWdS)NFTrr Údata_meta_writezcan not submit database sql:) r7r4ÚgetÚKeyboardInterruptr2ÚsubmitÚ solve_forÚ RuntimeErrorr1)r8ÚrequestÚ func_nameÚargsÚerrrr?`s(    " zDataBaseProcess.routinecCsL|jdk rBy|j ¡Wn| d¡YnX| d|j|j¡d|_dS)Nzcan not close databasez
closed DB T)r3Úcloser1r&r'r7)r8rrrÚshutdownxs
zDataBaseProcess.shutdown)rJrcCs|j |¡~dS)N)r4Úput)r8rJrrrÚ put_queues zDataBaseProcess.put_queuecCs,d}y|jt|ƒ ¡}Wn YnX|S)N)r5ÚintrE)r8Ú device_idÚtaskrrrÚ get_queue‡s zDataBaseProcess.get_queue)rrLcCs&|}tt||ƒƒr"t||ƒ|ŽdS)N)ÚcallableÚgetattr)r8rrLZdorrrrHszDataBaseProcess.solve_for)Ú_datac
Csp|dkràd}g}xP| ¡D]D}|t|ƒd}t||tƒrP| t||ƒ¡q| ||¡qW|ddd}| |¡|j ¡}z@y| ||¡Wn*|j  ¡| 
¡|j   |¡YnXWd|j  ¡| 
¡XdS|dk rld}|g}|j ¡}d} | ||¡| 
¡} |j  ¡| 
¡| dkrZd}g}xT| ¡D]H}|t|ƒd }t||tƒr|| t||ƒ¡n| ||¡qDW|ddd
}x| ¡D]}|d }qªW|ddd }|j ¡}z@y| ||¡Wn*|j  ¡| 
¡|j   |¡YnXWd|jt|ƒ  d
|dt| 
¡dƒg¡|j  ¡| 
¡Xnd}g}xT| ¡D]H}|t|ƒd}t||tƒr¤| t||ƒ¡n| ||¡qlW|ddd}t| tƒrÜ| d} | | ¡|j ¡}z@y| ||¡Wn*|j  ¡| 
¡|j   |¡YnXWd|jt|ƒ  d
|dt| ƒg¡|j  ¡| 
¡XdSdS)Nrz+UPDATE "public"."recording_data_metas" SET z = %s, éþÿÿÿz WHERE (id = %s)Tz>SELECT id FROM "public"."recording_data_metas" WHERE uuid = %sz-INSERT INTO "public"."recording_data_metas" (z, z
) VALUES (z%s, z) RETURNING idÚupdate_meta_idÚuuid)ÚkeysÚstrÚ
isinstanceÚdictÚappendrr3ÚcursorÚexecuteÚcommitrNr6rPÚfetchoner5rRÚtuple)
r8rXrSÚ_uuidÚ_idÚsql_strÚsql_setÚitemÚ
sql_cursorZsql_idrrrrDs”






 



*
 


"

zDataBaseProcess.data_meta_writecCs |dk rNd}t|ƒg}|j ¡}d}| ||¡| ¡}|j ¡| ¡|S|dk rœd}t|ƒg}|j ¡}d}| ||¡| ¡}|j ¡| ¡|SdS)Nz;SELECT * FROM "public"."recording_data_metas" WHERE id = %sz=SELECT * FROM "public"."recording_data_metas" WHERE path = %s)r]r3rarbrdrcrN)r8Ú_pathrgrhrirkÚretrrrÚ
data_meta_getÿs*

 


 
zDataBaseProcess.data_meta_getcCsnd}|dk rjd}t|ƒg}|j ¡}| ||¡d}yt| ¡dƒ}Wn
dS|j ¡| ¡|SdS)Nz=SELECT * FROM "public"."recording_data_metas" WHERE path = %sr)r]r3rarbrRrdrcrN)r8rlrmrhrirkrrrÚdata_meta_id_get_by_path!s

 
z(DataBaseProcess.data_meta_id_get_by_pathc
Cs€xx|D]n}dt|ƒd}g}xd|| ¡D]T}|t|ƒd}t|||tƒrn| t|||ƒ¡q0| t|||ƒ¡q0W|ddd}x|| ¡D] }|d}q¦W|ddd}|j ¡}zby| ||¡WnLt k
r.} z,t
d | ƒ|j  ¡|  ¡|j
 |¡Wdd} ~ XYnXWd|jt|ƒ d
||d |t| ¡dƒg¡|j  ¡|  ¡XqWd S)
NzINSERT INTO "public"."z_recording_data_raws" (z, rrYz
) VALUES (z%s, z) RETURNING idzdata_raw_create errorÚupdate_raw_dict_idr[T)r]r\r^r_r`rr3rarbrIÚprintrcrNr6rPr5rRrd)
r8Ú
_data_dictÚ
_channel_listrSÚ_channelrhrirjrkrMrrrÚdata_raw_create6s0 


"0
zDataBaseProcess.data_raw_createcCdt|ƒd}g}xP| ¡D]D}|t|ƒd}t||tƒrT| t||ƒ¡q| ||¡qW|ddd}| |¡|j ¡}| ||¡|j  ¡| 
¡dS)NzUPDATE "public"."z_recording_data_raws" SET z = %s, rrYz WHERE (id = %s)) r]r\r^r_r`rr3rarbrcrN)r8rgrtrXrhrirjrkrrrÚdata_raw_updateWs

 
zDataBaseProcess.data_raw_updatec Csrxl|D]d}||d}dt|ƒd}|||g}|j ¡}| ||¡|j ¡| ¡||=~t ¡qWdS)Nz"***"zUPDATE "public"."z?_recording_data_raws" SET data = concat(data, %s) where id = %s)r]r3rarbrcrNÚgcÚcollect) r8Ú_id_dictrsrrrtZcompressed_valuerhrirkrrrÚdata_raw_recordingks
  
 
 z"DataBaseProcess.data_raw_recordingc Csxz|D]p}dt|ƒd}g}xd|| ¡D]T}|t|ƒd}t|||tƒrn| t|||ƒ¡q0| t|||ƒ¡q0W|ddd}x|| ¡D] }|d}q¦W|ddd}|j ¡} zby|  ||¡WnLt k
r.}
z,t
d |
ƒ|j  ¡|   ¡|j
 |¡Wdd}
~
XYnXWd|jt|ƒ d
||d ||t|  ¡dƒg¡|j  ¡|   ¡XqWd S)
NzINSERT INTO "public"."z_recording_data_minis" (z, rrYz
) VALUES (z%s, z) RETURNING idzdata_mini_create errorÚupdate_mini_dict_idr[T)r]r\r^r_r`rr3rarbrIrqrcrNr6rPr5rRrd) r8rrrsÚ_scalerSrtrhrirjrkrMrrrÚdata_mini_create€s0