DE-Lib 0.0.20__py3-none-any.whl → 0.0.35.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- DE_Lib/DataBase/Azure.py +22 -11
- DE_Lib/DataBase/Cache.py +8 -2
- DE_Lib/DataBase/Firebird.py +15 -6
- DE_Lib/DataBase/Informix.py +14 -4
- DE_Lib/DataBase/Metadata.py +1 -1
- DE_Lib/DataBase/MsSql.py +12 -6
- DE_Lib/DataBase/MySql.py +37 -11
- DE_Lib/DataBase/Oracle.py +105 -8
- DE_Lib/DataBase/Postgres.py +15 -7
- DE_Lib/DataBase/RedShift.py +15 -7
- DE_Lib/DataBase/SQCipher.py +15 -11
- DE_Lib/DataBase/SQLite.py +38 -14
- DE_Lib/Files/Zip.py +119 -0
- DE_Lib/Log/Level.py +13 -13
- DE_Lib/Log/Log.py +61 -40
- DE_Lib/Utils/Cipher/Fernet.py +26 -5
- DE_Lib/Utils/Colors.py +1 -1
- DE_Lib/Utils/DateUtils.py +3 -3
- DE_Lib/Utils/Generic.py +30 -9
- DE_Lib/Utils/Sql.py +78 -0
- DE_Lib/Utils/System.py +53 -0
- DE_Lib/Utils/WebHook.py +3 -2
- {de_lib-0.0.20.dist-info → de_lib-0.0.35.4.dist-info}/METADATA +3 -2
- de_lib-0.0.35.4.dist-info/RECORD +48 -0
- {de_lib-0.0.20.dist-info → de_lib-0.0.35.4.dist-info}/WHEEL +1 -1
- DE_Lib/Utils/SQL.py +0 -34
- de_lib-0.0.20.dist-info/RECORD +0 -47
- {de_lib-0.0.20.dist-info → de_lib-0.0.35.4.dist-info/licenses}/LICENCE +0 -0
- {de_lib-0.0.20.dist-info → de_lib-0.0.35.4.dist-info}/top_level.txt +0 -0
DE_Lib/DataBase/Azure.py
CHANGED
@@ -1,31 +1,42 @@
|
|
1
|
-
|
1
|
+
"""
|
2
|
+
Faltam testes mais conclusivos
|
3
|
+
"""
|
4
|
+
import redshift_connector as redshift
|
5
|
+
from azure.storage.filedatalake import DataLakeServiceClient
|
6
|
+
import os
|
7
|
+
import json
|
2
8
|
|
9
|
+
from DE_Lib.Utils import Generic
|
3
10
|
|
4
|
-
|
11
|
+
gen = Generic.GENERIC()
|
12
|
+
|
13
|
+
|
14
|
+
class AZURE:
|
5
15
|
def __init__(self):
|
6
16
|
self._connection_is_valid = None
|
7
17
|
self._nome_database = None
|
8
18
|
self._cnn = None
|
9
19
|
self.__database_error = None
|
10
20
|
|
11
|
-
def
|
12
|
-
conn = None
|
21
|
+
def Connect(self, string_connect: dict):
|
22
|
+
conn, result = None, None
|
13
23
|
try:
|
14
|
-
|
15
|
-
|
16
|
-
conn = az.connect(host=string_connect["host"],
|
24
|
+
conn = DataLakeServiceClient(host=string_connect["host"],
|
17
25
|
database=string_connect["instance"],
|
18
26
|
user=string_connect["username"],
|
19
27
|
password=string_connect["password"]
|
20
28
|
)
|
21
29
|
self._connection_is_valid = True
|
22
|
-
self.
|
30
|
+
self._cnn = result
|
31
|
+
self.__database_error = f"""{json.dumps(string_connect, indent=4).replace(string_connect["password"], "******")}\nConexao bem sucedida!"""
|
32
|
+
self._nome_database = gen.nvl(string_connect["database"], "")
|
23
33
|
except Exception as error:
|
34
|
+
msg = f"""{json.dumps(string_connect, indent=4).replace(string_connect["password"], "******")}\nFalha ao tentar se conectar com o banco de dados AZURE\nException Error: {error} """
|
35
|
+
result = msg
|
24
36
|
self._connection_is_valid = False
|
25
|
-
self.__database_error =
|
26
|
-
conn = error
|
37
|
+
self.__database_error = msg
|
27
38
|
finally:
|
28
|
-
return
|
39
|
+
return result
|
29
40
|
|
30
41
|
@property
|
31
42
|
def CONNECTION(self):
|
DE_Lib/DataBase/Cache.py
CHANGED
@@ -3,7 +3,11 @@ import jpype as jp
|
|
3
3
|
import os
|
4
4
|
import json
|
5
5
|
|
6
|
-
|
6
|
+
from DE_Lib.Utils import Generic
|
7
|
+
|
8
|
+
gen = Generic.GENERIC()
|
9
|
+
|
10
|
+
class CACHE:
|
7
11
|
def __init__(self):
|
8
12
|
self._connection_is_valid = None
|
9
13
|
self._nome_database = None
|
@@ -48,7 +52,7 @@ class Cache:
|
|
48
52
|
self._connection_is_valid = True
|
49
53
|
self._cnn = result
|
50
54
|
self._database_error = f"""{json.dumps(string_connect, indent=4).replace(string_connect["pwd"], "******")}\nConexao bem sucedida!"""
|
51
|
-
self._nome_database = string_connect["database"]
|
55
|
+
self._nome_database = gen.nvl(string_connect["database"], "")
|
52
56
|
except Exception as error:
|
53
57
|
msg = f"""{json.dumps(string_connect, indent=4).replace(string_connect["pwd"], "******")}\nFalha ao tentar se conectar com o banco de dados CACHÉ (intersystem)\nException Error: {error} """
|
54
58
|
result = msg
|
@@ -57,6 +61,8 @@ class Cache:
|
|
57
61
|
finally:
|
58
62
|
return result
|
59
63
|
|
64
|
+
|
65
|
+
|
60
66
|
@property
|
61
67
|
def CONNECTION(self):
|
62
68
|
return self._cnn
|
DE_Lib/DataBase/Firebird.py
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
import fbd
|
2
|
+
import os
|
3
|
+
import json
|
2
4
|
|
3
|
-
|
5
|
+
from DE_Lib.Utils import Generic
|
6
|
+
|
7
|
+
gen = Generic.GENERIC()
|
8
|
+
|
9
|
+
class FIREBIRD:
|
4
10
|
def __init__(self):
|
5
11
|
self._connection_is_valid = None
|
6
12
|
self._nome_database = None
|
@@ -10,7 +16,7 @@ class Firebird:
|
|
10
16
|
# ----------------------------------------------------------------
|
11
17
|
# Falta driver - maquina local não permite
|
12
18
|
def Connect(self, string_connect: dict):
|
13
|
-
msg, conn = None, None
|
19
|
+
msg, conn, result = None, None, None
|
14
20
|
try:
|
15
21
|
user = string_connect["username"]
|
16
22
|
pwd = string_connect["password"]
|
@@ -19,13 +25,16 @@ class Firebird:
|
|
19
25
|
instance = string_connect["instance"]
|
20
26
|
conn = fbd.connect(host=host, database=instance, user=user, password=pwd, port=port)
|
21
27
|
self._connection_is_valid = True
|
22
|
-
self._nome_database = string_connect["database"]
|
23
|
-
self._cnn =
|
28
|
+
self._nome_database = gen.nvl(string_connect["database"], "")
|
29
|
+
self._cnn = result
|
30
|
+
self.__database_error = f"""{json.dumps(string_connect, indent=4).replace(string_connect["password"], "******")}\nConexao bem sucedida!"""
|
24
31
|
except Exception as error:
|
25
|
-
|
32
|
+
msg = f"""{json.dumps(string_connect, indent=4).replace(string_connect["password"], "******")}\nFalha ao tentar se conectar com o banco de dados ORACLE\nException Error: {error} """
|
33
|
+
result = msg
|
26
34
|
self._connection_is_valid = False
|
27
|
-
self.
|
35
|
+
self.__database_error = msg
|
28
36
|
finally:
|
37
|
+
return result
|
29
38
|
return conn
|
30
39
|
|
31
40
|
@property
|
DE_Lib/DataBase/Informix.py
CHANGED
@@ -1,6 +1,11 @@
|
|
1
|
+
import os
|
2
|
+
import json
|
1
3
|
|
4
|
+
from DE_Lib.Utils import Generic
|
2
5
|
|
3
|
-
|
6
|
+
gen = Generic.GENERIC()
|
7
|
+
|
8
|
+
class INFORMIX:
|
4
9
|
def __init__(self):
|
5
10
|
self._connection_is_valid = None
|
6
11
|
self._nome_database = None
|
@@ -10,15 +15,20 @@ class Informix:
|
|
10
15
|
# ----------------------------------------------------------------
|
11
16
|
# Falta tudo (Instalar driver ODBC) Maquina local não permite
|
12
17
|
def Connect(self, string_connect: dict):
|
18
|
+
msg, result = None, None
|
13
19
|
try:
|
14
20
|
pass
|
15
21
|
self._connection_is_valid = True
|
16
|
-
self.
|
22
|
+
self._nome_database = gen.nvl(string_connect["database"], "")
|
23
|
+
self._cnn = result
|
24
|
+
self.__database_error = f"""{json.dumps(string_connect, indent=4).replace(string_connect["password"], "******")}\nConexao bem sucedida!"""
|
17
25
|
except Exception as error:
|
26
|
+
msg = f"""{json.dumps(string_connect, indent=4).replace(string_connect["password"], "******")}\nFalha ao tentar se conectar com o banco de dados ORACLE\nException Error: {error} """
|
27
|
+
result = msg
|
18
28
|
self._connection_is_valid = False
|
19
|
-
self.
|
29
|
+
self.__database_error = msg
|
20
30
|
finally:
|
21
|
-
|
31
|
+
return result
|
22
32
|
|
23
33
|
@property
|
24
34
|
def CONNECTION(self):
|
DE_Lib/DataBase/Metadata.py
CHANGED
DE_Lib/DataBase/MsSql.py
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
import pymssql as mssql
|
2
2
|
|
3
|
-
|
3
|
+
from DE_Lib.Utils import Generic
|
4
|
+
|
5
|
+
gen = Generic.GENERIC()
|
6
|
+
|
7
|
+
class MSSQL:
|
4
8
|
def __init__(self):
|
5
9
|
self._connection_is_valid = None
|
6
10
|
self._nome_database = None
|
@@ -13,14 +17,16 @@ class MsSql:
|
|
13
17
|
# Efetuando a conexao com a instancia do BANCO
|
14
18
|
conn = mssql.connect(user=string_connect["username"], password=string_connect["password"], database=string_connect["instance"], server=string_connect["host"])
|
15
19
|
self._connection_is_valid = True
|
16
|
-
self.
|
17
|
-
self.
|
20
|
+
self._cnn = result
|
21
|
+
self.__database_error = f"""{json.dumps(string_connect, indent=4).replace(string_connect["password"], "******")}\nConexao bem sucedida!"""
|
22
|
+
self._nome_database = gen.nvl(string_connect["database"], "")
|
18
23
|
except Exception as error:
|
19
|
-
|
24
|
+
msg = f"""{json.dumps(string_connect, indent=4).replace(string_connect["password"], "******")}\nFalha ao tentar se conectar com o banco de dados MSSQL (SqlAlchemy)\nException Error: {error} """
|
25
|
+
result = msg
|
20
26
|
self._connection_is_valid = False
|
21
|
-
self.
|
27
|
+
self.__database_error = msg
|
22
28
|
finally:
|
23
|
-
return
|
29
|
+
return result
|
24
30
|
|
25
31
|
@property
|
26
32
|
def CONNECTION(self):
|
DE_Lib/DataBase/MySql.py
CHANGED
@@ -1,27 +1,45 @@
|
|
1
1
|
import mysql.connector as mysql
|
2
|
+
import pymysql
|
3
|
+
import sqlalchemy as sqa
|
2
4
|
import json
|
3
5
|
|
4
|
-
|
6
|
+
from DE_Lib.Utils import Generic
|
7
|
+
|
8
|
+
gen = Generic.GENERIC()
|
9
|
+
|
10
|
+
class MYSQL:
|
5
11
|
def __init__(self):
|
6
12
|
self._connection_is_valid = None
|
7
13
|
self._nome_database = None
|
14
|
+
self.__database_driver = None
|
8
15
|
self._cnn = None
|
9
16
|
self.__database_error = None
|
10
17
|
|
11
|
-
def Connect(self,
|
12
|
-
msg,
|
18
|
+
def Connect(self, conn: dict):
|
19
|
+
msg, result = None, True
|
13
20
|
try:
|
14
21
|
# Efetuando a conexao com a instancia do BANCO
|
15
|
-
|
22
|
+
__conn = None
|
23
|
+
if conn["driver_conexao"].upper() == "SQLALCHEMY":
|
24
|
+
__dns = f"""{conn["database"].lower()}+pymysql://{conn["username"]}:{conn["password"]}@{conn["host"]}:{conn["port"]}/{conn["instance"]}"""
|
25
|
+
__engine = sqa.create_engine(url=__dns)
|
26
|
+
__conn = __engine.connect().connection
|
27
|
+
#__conn = __conn.connection
|
28
|
+
elif conn["driver_conexao"].upper() == "MYSQL":
|
29
|
+
__conn = mysql.connect(user=conn["username"], password=conn["password"], database=conn["instance"], host=conn["host"])
|
30
|
+
elif conn["driver_conexao"].upper() == "PYMYSQL":
|
31
|
+
__conn = pymysql.connect(user=conn["username"], password=conn["password"], database=conn["instance"], host=conn["host"])#, cursorclass=pymysql.cursors.DictCursor)
|
16
32
|
self._connection_is_valid = True
|
17
|
-
self.
|
18
|
-
self.
|
19
|
-
self.
|
33
|
+
self._nome_database = gen.nvl(conn["database"], "")
|
34
|
+
self.__database_driver = conn["driver_conexao"]
|
35
|
+
self._cnn = __conn
|
36
|
+
self.__database_error = result
|
37
|
+
result = True
|
20
38
|
except Exception as error:
|
21
|
-
msg = f"""{json.dumps(
|
39
|
+
msg = f"""{json.dumps(conn, indent=4).replace(conn["password"], "******")}\nFalha ao tentar se conectar com o banco de dados MYSQL\nException Error: {error} """
|
22
40
|
result = msg
|
23
41
|
self._connection_is_valid = False
|
24
|
-
self.
|
42
|
+
self.__database_error = msg
|
25
43
|
finally:
|
26
44
|
return result
|
27
45
|
|
@@ -35,8 +53,16 @@ class MySql:
|
|
35
53
|
|
36
54
|
@property
|
37
55
|
def NOME_DATABASE(self):
|
38
|
-
return self._nome_database
|
56
|
+
return self._nome_database
|
39
57
|
|
40
58
|
@property
|
41
59
|
def DATABASE_ERROR(self):
|
42
|
-
return self.
|
60
|
+
return self.__database_error
|
61
|
+
|
62
|
+
@property
|
63
|
+
def DATABASE_DRIVER(self):
|
64
|
+
return self.__database_driver
|
65
|
+
|
66
|
+
@DATABASE_DRIVER.setter
|
67
|
+
def DATABASE_DRIVER(self, value):
|
68
|
+
self._DATABASE_DRIVER = value
|
DE_Lib/DataBase/Oracle.py
CHANGED
@@ -1,15 +1,100 @@
|
|
1
1
|
import os
|
2
2
|
import cx_Oracle as ora
|
3
|
+
import oracledb as odb
|
3
4
|
import sqlalchemy as sqa
|
4
5
|
import json
|
5
6
|
|
6
|
-
|
7
|
+
from DE_Lib.Utils import Generic
|
8
|
+
|
9
|
+
gen = Generic.GENERIC()
|
10
|
+
|
11
|
+
class ORACLE:
|
7
12
|
def __init__(self):
|
8
13
|
self._connection_is_valid = None
|
9
14
|
self._nome_database = None
|
10
15
|
self._cnn = None
|
11
16
|
self.__database_error = None
|
12
17
|
|
18
|
+
# ---------------------------------
|
19
|
+
def Connect(self, conn: dict):
|
20
|
+
msg, result = None, True
|
21
|
+
try:
|
22
|
+
|
23
|
+
#region Definindo o tipo de instancia SID/SERVICE_NAME
|
24
|
+
if conn["type_conection"].upper() == "SID":
|
25
|
+
__dnsName = odb.makedsn(host=conn["host"], port=conn["port"],
|
26
|
+
sid=conn["instance"])
|
27
|
+
else:
|
28
|
+
__dnsName = odb.makedsn(host=conn["host"], port=conn["port"],
|
29
|
+
service_name=conn["instance"])
|
30
|
+
#endregion
|
31
|
+
|
32
|
+
#region Tipo de driver de conexao
|
33
|
+
"""
|
34
|
+
Oracle Thin Mode vs Thick Mode no oracledb
|
35
|
+
O driver oracledb do Python pode operar em dois modos de conexão com o Oracle Database:
|
36
|
+
. Thin Mode (Padrão) → Conexão nativa, sem necessidade do Oracle Client.
|
37
|
+
. Thick Mode → Usa o Oracle Client para recursos avançados e maior desempenho.
|
38
|
+
🔹 Comparação Geral
|
39
|
+
Característica Thin Mode (Padrão) Thick Mode
|
40
|
+
Requer Oracle Client? ❌ Não ✅ Sim
|
41
|
+
Performance Média Alta
|
42
|
+
Suporta TNS (tnsnames.ora)? ❌ Não ✅ Sim
|
43
|
+
Suporta Connection Pooling? ❌ Limitado ✅ Sim
|
44
|
+
Suporte a Banco de Dados Antigos? ❌ Não ✅ Sim
|
45
|
+
Uso recomendado Ambientes simples Produção, conexões complexas
|
46
|
+
,Cloud, Containers
|
47
|
+
"""
|
48
|
+
if conn["driver_mode"].upper() == "THICK":
|
49
|
+
try:
|
50
|
+
# region LIBRARY
|
51
|
+
if conn["path_library"] is None:
|
52
|
+
__pathlib = os.getenv("ORACLE_LIB")
|
53
|
+
else:
|
54
|
+
__pathlib = conn["path_library"]
|
55
|
+
# endregion
|
56
|
+
ora.init_oracle_client(lib_dir=__pathlib)
|
57
|
+
except Exception as error:
|
58
|
+
...
|
59
|
+
# Modo THIN apenas do banco 12 em diante
|
60
|
+
#endregion
|
61
|
+
|
62
|
+
#region Conexao via SQLALCHEMY | CX_ORACLE | ORACLEDB
|
63
|
+
__conn = None
|
64
|
+
if conn["driver_conexao"].upper() == "SQLALCHEMY":
|
65
|
+
# driver oracledb compativel com banco 12 em diante
|
66
|
+
if not conn["driver_library"]:
|
67
|
+
# driver default caso não seja explicitado
|
68
|
+
# para versões do oracle anterior a 12, este driver é o mais recomendado.
|
69
|
+
__driver = "cx_oracle"
|
70
|
+
else:
|
71
|
+
__driver = conn["driver_library"].lower()
|
72
|
+
conn_cnn = f"""{conn["database"].lower()}+{__driver}://{conn["username"]}:{conn["password"]}@{__dnsName}"""
|
73
|
+
__engine = sqa.create_engine(conn_cnn)
|
74
|
+
__conn = __engine.connect().connection
|
75
|
+
elif conn["driver_conexao"].upper() == "CX_ORACLE":
|
76
|
+
__conn = ora.connect(conn["username"], conn["password"], __dnsName, threaded=True)
|
77
|
+
elif conn["driver_conexao"].upper() == "ORACLEDB" or conn is None:
|
78
|
+
# Conexao via ORACLEDB (Novo driver em substituicao do CX_ORACLE)
|
79
|
+
__conn = ora.connect(conn["username"], conn["password"], __dnsName, threaded=True)
|
80
|
+
#endregion
|
81
|
+
|
82
|
+
#region Populando propriedadas da classe
|
83
|
+
self.__connection_is_valid = True
|
84
|
+
self.__nome_database = gen.nvl(conn["database"], "")
|
85
|
+
self.__database_driver = conn["driver_conexao"]
|
86
|
+
self.__cnn = __conn
|
87
|
+
self.__database_error = result
|
88
|
+
#endregion
|
89
|
+
except Exception as error:
|
90
|
+
msg = f"""{json.dumps(conn, indent=4).replace(conn["password"], "******")}\nFalha ao tentar se conectar com o banco de dados ORACLE (SqlAlchemy)\nException Error: {error} """
|
91
|
+
self._connection_is_valid = False
|
92
|
+
self.__database_error = msg
|
93
|
+
result = self._connection_is_valid
|
94
|
+
finally:
|
95
|
+
return result
|
96
|
+
|
97
|
+
#region METODOS qQUE FICARÃO DEPRECIADOS A PARTIR DE 18/03/2025
|
13
98
|
def Connect_ORA(self, string_connect: dict):
|
14
99
|
pathlib, msg, result = None, None, None
|
15
100
|
try:
|
@@ -38,7 +123,7 @@ class Oracle:
|
|
38
123
|
# Efetuando a conexao com a instancia do BANCO
|
39
124
|
result = ora.connect(string_connect["username"], string_connect["password"], dnsName, threaded=True)
|
40
125
|
self._connection_is_valid = True
|
41
|
-
self._nome_database = string_connect["database"]
|
126
|
+
self._nome_database = gen.nvl(string_connect["database"], "")
|
42
127
|
self._cnn = result
|
43
128
|
self.__database_error = f"""{json.dumps(string_connect, indent=4).replace(string_connect["password"], "******")}\nConexao bem sucedida!"""
|
44
129
|
except Exception as error:
|
@@ -46,7 +131,6 @@ class Oracle:
|
|
46
131
|
result = msg
|
47
132
|
self._connection_is_valid = False
|
48
133
|
self.__database_error = msg
|
49
|
-
|
50
134
|
finally:
|
51
135
|
return result
|
52
136
|
|
@@ -55,6 +139,7 @@ class Oracle:
|
|
55
139
|
try:
|
56
140
|
# Definindo a Library ORACLE
|
57
141
|
if string_connect["path_library"] is None:
|
142
|
+
# ORACLE_LIB tem que estar previamente criada
|
58
143
|
pathlib = os.getenv("ORACLE_LIB")
|
59
144
|
else:
|
60
145
|
pathlib = string_connect["path_library"]
|
@@ -85,7 +170,7 @@ class Oracle:
|
|
85
170
|
self._connection_is_valid = True
|
86
171
|
self._cnn = result
|
87
172
|
self.__database_error = f"""{json.dumps(string_connect, indent=4).replace(string_connect["password"], "******")}\nConexao bem sucedida!"""
|
88
|
-
self._nome_database = string_connect["database"]
|
173
|
+
self._nome_database = gen.nvl(string_connect["database"], "")
|
89
174
|
except Exception as error:
|
90
175
|
msg = f"""{json.dumps(string_connect, indent=4).replace(string_connect["password"], "******")}\nFalha ao tentar se conectar com o banco de dados ORACLE (SqlAlchemy)\nException Error: {error} """
|
91
176
|
result = msg
|
@@ -93,19 +178,31 @@ class Oracle:
|
|
93
178
|
self.__database_error = msg
|
94
179
|
finally:
|
95
180
|
return result
|
181
|
+
#endregion
|
96
182
|
|
183
|
+
#region PROPRIEDADES
|
97
184
|
@property
|
98
185
|
def CONNECTION(self):
|
99
|
-
return self.
|
186
|
+
return self.__cnn
|
100
187
|
|
101
188
|
@property
|
102
189
|
def CONNECTION_VALID(self):
|
103
|
-
return self.
|
190
|
+
return self.__connection_is_valid
|
104
191
|
|
105
192
|
@property
|
106
193
|
def NOME_DATABASE(self):
|
107
|
-
return self.
|
194
|
+
return self.__nome_database.upper()
|
108
195
|
|
109
196
|
@property
|
110
197
|
def DATABASE_ERROR(self):
|
111
|
-
return self.__database_error
|
198
|
+
return self.__database_error
|
199
|
+
|
200
|
+
@property
|
201
|
+
def DATABASE_DRIVER(self):
|
202
|
+
return self.__database_driver
|
203
|
+
|
204
|
+
@DATABASE_DRIVER.setter
|
205
|
+
def DATABASE_DRIVER(self, value):
|
206
|
+
self._DATABASE_DRIVER = value
|
207
|
+
|
208
|
+
#endregion
|
DE_Lib/DataBase/Postgres.py
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
import psycopg2 as ps2
|
2
|
+
import os
|
3
|
+
import json
|
2
4
|
|
3
|
-
|
5
|
+
from DE_Lib.Utils import Generic
|
6
|
+
|
7
|
+
gen = Generic.GENERIC()
|
8
|
+
|
9
|
+
class POSTGRES:
|
4
10
|
def __init__(self):
|
5
11
|
self._connection_is_valid = None
|
6
12
|
self._nome_database = None
|
@@ -8,19 +14,21 @@ class Postgres:
|
|
8
14
|
self.__database_error = None
|
9
15
|
|
10
16
|
def Connect(self, string_connect: dict):
|
11
|
-
msg, conn = None, None
|
17
|
+
msg, conn, result = None, None, None
|
12
18
|
try:
|
13
19
|
# Efetuando a conexao com a instancia do BANCO
|
14
20
|
conn = ps2.connect(user=string_connect["username"], password=string_connect["password"], database=string_connect["instance"], host=string_connect["host"])
|
15
21
|
self._connection_is_valid = True
|
16
|
-
self.
|
17
|
-
self.
|
22
|
+
self._cnn = result
|
23
|
+
self.__database_error = f"""{json.dumps(string_connect, indent=4).replace(string_connect["password"], "******")}\nConexao bem sucedida!"""
|
24
|
+
self._nome_database = gen.nvl(string_connect["database"], "")
|
18
25
|
except Exception as error:
|
19
|
-
|
26
|
+
msg = f"""{json.dumps(string_connect, indent=4).replace(string_connect["password"], "******")}\nFalha ao tentar se conectar com o banco de dados POSTGRES\nException Error: {error} """
|
27
|
+
result = msg
|
20
28
|
self._connection_is_valid = False
|
21
|
-
self.
|
29
|
+
self.__database_error = msg
|
22
30
|
finally:
|
23
|
-
return
|
31
|
+
return result
|
24
32
|
|
25
33
|
@property
|
26
34
|
def CONNECTION(self):
|
DE_Lib/DataBase/RedShift.py
CHANGED
@@ -1,6 +1,12 @@
|
|
1
|
+
import redshift_connector as reds
|
2
|
+
import os
|
3
|
+
import json
|
1
4
|
|
5
|
+
from DE_Lib.Utils import Generic
|
2
6
|
|
3
|
-
|
7
|
+
gen = Generic.GENERIC()
|
8
|
+
|
9
|
+
class REDSHIFT:
|
4
10
|
def __init__(self):
|
5
11
|
self._connection_is_valid = None
|
6
12
|
self._nome_database = None
|
@@ -8,7 +14,7 @@ class RedShift:
|
|
8
14
|
self.__database_error = None
|
9
15
|
|
10
16
|
def Connect(self, string_connect: dict):
|
11
|
-
conn = None
|
17
|
+
conn, result = None, None
|
12
18
|
try:
|
13
19
|
conn = reds.connect(host=string_connect["host"],
|
14
20
|
database=string_connect["instance"],
|
@@ -16,14 +22,16 @@ class RedShift:
|
|
16
22
|
password=string_connect["password"]
|
17
23
|
)
|
18
24
|
self._connection_is_valid = True
|
19
|
-
self.
|
20
|
-
self.
|
25
|
+
self._cnn = result
|
26
|
+
self.__database_error = f"""{json.dumps(string_connect, indent=4).replace(string_connect["password"], "******")}\nConexao bem sucedida!"""
|
27
|
+
self._nome_database = gen.nvl(string_connect["database"], "")
|
21
28
|
except Exception as error:
|
29
|
+
msg = f"""{json.dumps(string_connect, indent=4).replace(string_connect["password"], "******")}\nFalha ao tentar se conectar com o banco de dados RedShift\nException Error: {error} """
|
30
|
+
result = msg
|
22
31
|
self._connection_is_valid = False
|
23
|
-
self.
|
24
|
-
conn = error
|
32
|
+
self.__database_error = msg
|
25
33
|
finally:
|
26
|
-
return
|
34
|
+
return result
|
27
35
|
|
28
36
|
@property
|
29
37
|
def CONNECTION(self):
|
DE_Lib/DataBase/SQCipher.py
CHANGED
@@ -1,29 +1,33 @@
|
|
1
|
+
import os
|
2
|
+
import json
|
1
3
|
|
4
|
+
from DE_Lib.Utils import Generic
|
2
5
|
|
3
|
-
|
6
|
+
gen = Generic.GENERIC()
|
7
|
+
|
8
|
+
class SQCIPHER:
|
4
9
|
def __init__(self):
|
5
10
|
self._connection_is_valid = None
|
6
11
|
self._nome_database = None
|
7
12
|
self._cnn = None
|
8
13
|
self.__database_error = None
|
9
14
|
|
10
|
-
def Connect(self,
|
15
|
+
def Connect(self, string_connect:dict, password):
|
11
16
|
DATABASE_NAME, result, msg, conn = None, False, None, None
|
12
17
|
try:
|
13
|
-
if os.path.isfile(
|
18
|
+
if os.path.isfile(os.path.join(string_connect["host"], string_connect["instance"])):
|
14
19
|
#conn = sqch.connect(database, password=password)
|
15
20
|
self._connection_is_valid = True
|
16
|
-
self._nome_database =
|
17
|
-
self._cnn =
|
18
|
-
|
19
|
-
msg = f"""SQLITE [{database}]- Não existe no local informado!"""
|
20
|
-
raise Exception(msg)
|
21
|
+
self._nome_database = gen.nvl(string_connect["database"], "")
|
22
|
+
self._cnn = result
|
23
|
+
self.__database_error = f"""{json.dumps(string_connect, indent=4).replace(string_connect["password"], "******")}\nConexao bem sucedida!"""
|
21
24
|
except Exception as error:
|
22
|
-
|
25
|
+
msg = f"""{json.dumps(string_connect, indent=4).replace(string_connect["password"], "******")}\nFalha ao tentar se conectar com o banco de dados ORACLE\nException Error: {error} """
|
26
|
+
result = msg
|
23
27
|
self._connection_is_valid = False
|
24
|
-
self.
|
28
|
+
self.__database_error = msg
|
25
29
|
finally:
|
26
|
-
return
|
30
|
+
return result
|
27
31
|
|
28
32
|
@property
|
29
33
|
def CONNECTION(self):
|
DE_Lib/DataBase/SQLite.py
CHANGED
@@ -1,33 +1,49 @@
|
|
1
1
|
import sqlite3 as sq3
|
2
|
+
import sqlalchemy as sqa
|
2
3
|
import os
|
4
|
+
import json
|
3
5
|
|
4
|
-
|
6
|
+
from DE_Lib.Utils import Generic
|
7
|
+
|
8
|
+
gen = Generic.GENERIC()
|
9
|
+
|
10
|
+
class SQLITE:
|
5
11
|
def __init__(self):
|
6
12
|
self._connection_is_valid = None
|
7
13
|
self._nome_database = None
|
8
14
|
self._cnn = None
|
9
15
|
self.__database_error = None
|
10
16
|
|
11
|
-
def Connect(self,
|
12
|
-
|
17
|
+
def Connect(self, conn: dict, **kwargs):
|
18
|
+
msg, result = None, True
|
13
19
|
try:
|
14
|
-
|
20
|
+
__file = os.path.join(conn["host"], conn["instance"])
|
21
|
+
if os.path.isfile(__file):
|
15
22
|
if "check_same_thread" in kwargs.keys():
|
16
23
|
__check_same_thread = kwargs.get("check_same_thread")
|
17
24
|
else:
|
18
25
|
__check_same_thread = True
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
+
|
27
|
+
__conn = None
|
28
|
+
if not conn["driver_conexao"]:
|
29
|
+
__conn = sq3.connect(__file, check_same_thread=__check_same_thread)
|
30
|
+
elif conn["driver_conexao"].upper() == "SQLALCHEMY":
|
31
|
+
engine = sqa.create_engine(f"""sqlite:///{__file}""")
|
32
|
+
__conn = engine.connect()
|
33
|
+
else:
|
34
|
+
...
|
35
|
+
# driver nativo sqlite
|
36
|
+
|
37
|
+
self._connection_is_valid = True
|
38
|
+
self._cnn = __conn
|
39
|
+
self._nome_database = gen.nvl(conn["database"], "SQLite")
|
40
|
+
self.__database_driver = conn["driver_conexao"]
|
41
|
+
self.__database_error = result
|
26
42
|
except Exception as error:
|
27
|
-
msg = f"""
|
43
|
+
msg = f"""{json.dumps(conn, indent=4).replace(conn["password"], "******")}\nFalha ao tentar se conectar com o banco de dados SQLite\nException Error: {error} """
|
28
44
|
result = msg
|
29
45
|
self._connection_is_valid = False
|
30
|
-
self.__database_error = msg
|
46
|
+
self.__database_error = msg
|
31
47
|
finally:
|
32
48
|
return result
|
33
49
|
|
@@ -45,4 +61,12 @@ class SQLite:
|
|
45
61
|
|
46
62
|
@property
|
47
63
|
def DATABASE_ERROR(self):
|
48
|
-
return self.__database_error
|
64
|
+
return self.__database_error
|
65
|
+
|
66
|
+
@property
|
67
|
+
def DATABASE_DRIVER(self):
|
68
|
+
return self.__database_driver
|
69
|
+
|
70
|
+
@DATABASE_DRIVER.setter
|
71
|
+
def DATABASE_DRIVER(self, value):
|
72
|
+
self._DATABASE_DRIVER = value
|