Overview
Package amb eines comunes utilitzades en els processos de càlcul de SISAP i de SIDIAP.
Requisites
- les dependències s'instalen automàticament, però cal tenir instantclient d'Oracle i client mariaDB (per exemple amb contenidor pydb)
- environment
- APP_CHARSET (default
utf8
) - TMP_FOLDER (default
/tmp
) - AES_KEY
- APP_CHARSET (default
Packaging
- canviar versió a setup.py
- publish.sh
A note on character encoding
MySQLdb / PyMySQL
- Consideracions prèvies:
- El paràmetre
CHARSET
de la connexió serveix per codificar i decodificar en cas que s'utilitziunicode
per entrada o sortida. Hi ha una diferència important entre els dos paquets:- A
MySQLdb
executa unSET NAMES
(almenys a1.3.7
), i per tant estableixcharacter_set_client
per l'entrada icharacter_set_results
per la sortida - A
PyMySQL
no ho fa (almenys a0.7.9
), i per tant cal fer-ho específicament (INIT_COMMAND
o manualment després de connectar). És imprescindible que coincideixin - Per ordre, primer s'executa
INIT_COMMAND
, desprésCHARSET
(aMySQLdb
) i després el que es faci manualment després de connectar
- A
- El paràmetre
- L'entrada depèn del que s'envia:
-
bytes
: han de ser en la mateixa codificació quecharacter_set_client
(establert per qualsevol mètode, veure Consideracions prèvies) -
unicode
: guardarà sempre bé (internament utilitzaCHARSET
per fer encode apython
, i el servidor utilitzacharacter_set_client
per interpretar-ho)
-
- La sortida depèn del paràmetre
USE_UNICODE
de la connexió (defaultpython2
: depèn de si s'especificaCHARSET
o no; defaultpython3
:True
):- Si és False: retorna
bytes
segons el valor decharacter_set_results
(establert per qualsevol mètode, veure Consideracions prèvies) - Si és True: retorna
unicode
(internament el servidor utilitzacharacter_set_results
per retornar, i despréspython
utilitzaCHARSET
per decodificar)
- Si és False: retorna
Redis
- Entrada depèn del que s'envia:
-
bytes
: guarda sense modificació -
unicode
: guarda codificat segons el paràmetreENCODING
de la connexió (default:utf8
)
-
- Sortida depèn del paràmetre
DECODE_RESPONSES
de la connexió (default:False
):-
False
: retornabytes
(sense modificació) -
True
: retornaunicode
segons el paràmetreENCODING
de la connexió (default:utf8
)
-
cx_Oracle
Es comporta diferent segons la versió de l'intèrpret, sense possibilitat de configuració:
- En
python2
treballa sempre enbytes
amb la codificació especificada aNLS_LANG
, tant per l'entrada com per la sortida - En
python3
treballa sempre enunicode
, tant per l'entrada com per la sortida (internament el servidor retorna segonsNLS_LANG
, i despréspython
decodifica segons el mateix paràmetre)
pymongo
MongoDB guarda sempre en utf8
- Entrada: Es pot enviar tant
unicode
comutf8
, però no altres encodings - Sortida: Torna sempre
unicode
excepte si l'entrada s'ha fet ambbytes
depython3
; en aquest cas tornaBinary
en python2 ibytes
en python3