DE-Lib 0.0.20__tar.gz → 0.0.35.4__tar.gz
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-0.0.20 → de_lib-0.0.35.4}/DE_LIB.egg-info/PKG-INFO +3 -2
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_LIB.egg-info/SOURCES.txt +2 -0
- de_lib-0.0.35.4/DE_Lib/DataBase/Azure.py +55 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/DataBase/Cache.py +8 -2
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/DataBase/Firebird.py +15 -6
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/DataBase/Informix.py +14 -4
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/DataBase/Metadata.py +1 -1
- de_lib-0.0.20/DE_Lib/DataBase/MySql.py → de_lib-0.0.35.4/DE_Lib/DataBase/MsSql.py +11 -8
- de_lib-0.0.35.4/DE_Lib/DataBase/MySql.py +68 -0
- de_lib-0.0.35.4/DE_Lib/DataBase/Oracle.py +208 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/DataBase/Postgres.py +15 -7
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/DataBase/RedShift.py +15 -7
- de_lib-0.0.35.4/DE_Lib/DataBase/SQCipher.py +46 -0
- de_lib-0.0.35.4/DE_Lib/DataBase/SQLite.py +72 -0
- de_lib-0.0.35.4/DE_Lib/Files/Zip.py +119 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Log/Level.py +13 -13
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Log/Log.py +61 -40
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Utils/Cipher/Fernet.py +26 -5
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Utils/Colors.py +1 -1
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Utils/DateUtils.py +3 -3
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Utils/Generic.py +30 -9
- de_lib-0.0.35.4/DE_Lib/Utils/Sql.py +78 -0
- de_lib-0.0.35.4/DE_Lib/Utils/System.py +103 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Utils/WebHook.py +3 -2
- {de_lib-0.0.20 → de_lib-0.0.35.4}/PKG-INFO +3 -2
- {de_lib-0.0.20 → de_lib-0.0.35.4}/setup.py +1 -1
- de_lib-0.0.20/DE_Lib/DataBase/Azure.py +0 -44
- de_lib-0.0.20/DE_Lib/DataBase/MsSql.py +0 -39
- de_lib-0.0.20/DE_Lib/DataBase/Oracle.py +0 -111
- de_lib-0.0.20/DE_Lib/DataBase/SQCipher.py +0 -42
- de_lib-0.0.20/DE_Lib/DataBase/SQLite.py +0 -48
- de_lib-0.0.20/DE_Lib/Utils/SQL.py +0 -34
- de_lib-0.0.20/DE_Lib/Utils/System.py +0 -50
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_LIB.egg-info/dependency_links.txt +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_LIB.egg-info/requires.txt +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_LIB.egg-info/top_level.txt +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Cloud/__init__.py +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/DataBase/__init__.py +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Files/Avro.py +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Files/Csv.py +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Files/JSon.py +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Files/Parquet.py +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Files/Txt.py +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Files/Xlsx.py +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Files/__init__.py +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Log/DE_LogEventos.py +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Log/__init__.py +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Utils/Cipher/Aes.py +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Utils/Cipher/Argon.py +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Utils/Cipher/Base64.py +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Utils/Cipher/Cipher.py +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Utils/Cipher/Gcm.py +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Utils/Cipher/Pbkdf2.py +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Utils/Cipher/Rsa.py +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Utils/Cipher/__init__.py +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/Utils/__init__.py +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/DE_Lib/__init__.py +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/LICENCE +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/README.md +0 -0
- {de_lib-0.0.20 → de_lib-0.0.35.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: DE_Lib
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.35.4
|
4
4
|
Summary: Biblioteca de funcionalidades
|
5
5
|
Home-page: https://github.com/DE-DATAx/DAX_DB.git
|
6
6
|
Author: Almir J Gomes
|
@@ -22,6 +22,7 @@ Dynamic: author-email
|
|
22
22
|
Dynamic: description
|
23
23
|
Dynamic: description-content-type
|
24
24
|
Dynamic: home-page
|
25
|
+
Dynamic: license-file
|
25
26
|
Dynamic: requires-dist
|
26
27
|
Dynamic: summary
|
27
28
|
|
@@ -32,6 +32,7 @@ DE_Lib/Files/JSon.py
|
|
32
32
|
DE_Lib/Files/Parquet.py
|
33
33
|
DE_Lib/Files/Txt.py
|
34
34
|
DE_Lib/Files/Xlsx.py
|
35
|
+
DE_Lib/Files/Zip.py
|
35
36
|
DE_Lib/Files/__init__.py
|
36
37
|
DE_Lib/Log/DE_LogEventos.py
|
37
38
|
DE_Lib/Log/Level.py
|
@@ -41,6 +42,7 @@ DE_Lib/Utils/Colors.py
|
|
41
42
|
DE_Lib/Utils/DateUtils.py
|
42
43
|
DE_Lib/Utils/Generic.py
|
43
44
|
DE_Lib/Utils/SQL.py
|
45
|
+
DE_Lib/Utils/Sql.py
|
44
46
|
DE_Lib/Utils/System.py
|
45
47
|
DE_Lib/Utils/WebHook.py
|
46
48
|
DE_Lib/Utils/__init__.py
|
@@ -0,0 +1,55 @@
|
|
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
|
8
|
+
|
9
|
+
from DE_Lib.Utils import Generic
|
10
|
+
|
11
|
+
gen = Generic.GENERIC()
|
12
|
+
|
13
|
+
|
14
|
+
class AZURE:
|
15
|
+
def __init__(self):
|
16
|
+
self._connection_is_valid = None
|
17
|
+
self._nome_database = None
|
18
|
+
self._cnn = None
|
19
|
+
self.__database_error = None
|
20
|
+
|
21
|
+
def Connect(self, string_connect: dict):
|
22
|
+
conn, result = None, None
|
23
|
+
try:
|
24
|
+
conn = DataLakeServiceClient(host=string_connect["host"],
|
25
|
+
database=string_connect["instance"],
|
26
|
+
user=string_connect["username"],
|
27
|
+
password=string_connect["password"]
|
28
|
+
)
|
29
|
+
self._connection_is_valid = True
|
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"], "")
|
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
|
36
|
+
self._connection_is_valid = False
|
37
|
+
self.__database_error = msg
|
38
|
+
finally:
|
39
|
+
return result
|
40
|
+
|
41
|
+
@property
|
42
|
+
def CONNECTION(self):
|
43
|
+
return self._cnn
|
44
|
+
|
45
|
+
@property
|
46
|
+
def CONNECTION_VALID(self):
|
47
|
+
return self._connection_is_valid
|
48
|
+
|
49
|
+
@property
|
50
|
+
def NOME_DATABASE(self):
|
51
|
+
return self._nome_database.upper()
|
52
|
+
|
53
|
+
@property
|
54
|
+
def DATABASE_ERROR(self):
|
55
|
+
return self.__database_error
|
@@ -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
|
@@ -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
|
@@ -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):
|
@@ -1,7 +1,10 @@
|
|
1
|
-
import
|
2
|
-
import json
|
1
|
+
import pymssql as mssql
|
3
2
|
|
4
|
-
|
3
|
+
from DE_Lib.Utils import Generic
|
4
|
+
|
5
|
+
gen = Generic.GENERIC()
|
6
|
+
|
7
|
+
class MSSQL:
|
5
8
|
def __init__(self):
|
6
9
|
self._connection_is_valid = None
|
7
10
|
self._nome_database = None
|
@@ -12,16 +15,16 @@ class MySql:
|
|
12
15
|
msg, conn = None, None
|
13
16
|
try:
|
14
17
|
# Efetuando a conexao com a instancia do BANCO
|
15
|
-
|
18
|
+
conn = mssql.connect(user=string_connect["username"], password=string_connect["password"], database=string_connect["instance"], server=string_connect["host"])
|
16
19
|
self._connection_is_valid = True
|
17
20
|
self._cnn = result
|
18
|
-
self.
|
19
|
-
self._nome_database = string_connect["database"]
|
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"], "")
|
20
23
|
except Exception as error:
|
21
|
-
msg = f"""{json.dumps(string_connect, indent=4).replace(string_connect["password"], "******")}\nFalha ao tentar se conectar com o banco de dados
|
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} """
|
22
25
|
result = msg
|
23
26
|
self._connection_is_valid = False
|
24
|
-
self.
|
27
|
+
self.__database_error = msg
|
25
28
|
finally:
|
26
29
|
return result
|
27
30
|
|
@@ -0,0 +1,68 @@
|
|
1
|
+
import mysql.connector as mysql
|
2
|
+
import pymysql
|
3
|
+
import sqlalchemy as sqa
|
4
|
+
import json
|
5
|
+
|
6
|
+
from DE_Lib.Utils import Generic
|
7
|
+
|
8
|
+
gen = Generic.GENERIC()
|
9
|
+
|
10
|
+
class MYSQL:
|
11
|
+
def __init__(self):
|
12
|
+
self._connection_is_valid = None
|
13
|
+
self._nome_database = None
|
14
|
+
self.__database_driver = None
|
15
|
+
self._cnn = None
|
16
|
+
self.__database_error = None
|
17
|
+
|
18
|
+
def Connect(self, conn: dict):
|
19
|
+
msg, result = None, True
|
20
|
+
try:
|
21
|
+
# Efetuando a conexao com a instancia do BANCO
|
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)
|
32
|
+
self._connection_is_valid = True
|
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
|
38
|
+
except Exception as error:
|
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} """
|
40
|
+
result = msg
|
41
|
+
self._connection_is_valid = False
|
42
|
+
self.__database_error = msg
|
43
|
+
finally:
|
44
|
+
return result
|
45
|
+
|
46
|
+
@property
|
47
|
+
def CONNECTION(self):
|
48
|
+
return self._cnn
|
49
|
+
|
50
|
+
@property
|
51
|
+
def CONNECTION_VALID(self):
|
52
|
+
return self._connection_is_valid
|
53
|
+
|
54
|
+
@property
|
55
|
+
def NOME_DATABASE(self):
|
56
|
+
return self._nome_database
|
57
|
+
|
58
|
+
@property
|
59
|
+
def DATABASE_ERROR(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
|
@@ -0,0 +1,208 @@
|
|
1
|
+
import os
|
2
|
+
import cx_Oracle as ora
|
3
|
+
import oracledb as odb
|
4
|
+
import sqlalchemy as sqa
|
5
|
+
import json
|
6
|
+
|
7
|
+
from DE_Lib.Utils import Generic
|
8
|
+
|
9
|
+
gen = Generic.GENERIC()
|
10
|
+
|
11
|
+
class ORACLE:
|
12
|
+
def __init__(self):
|
13
|
+
self._connection_is_valid = None
|
14
|
+
self._nome_database = None
|
15
|
+
self._cnn = None
|
16
|
+
self.__database_error = None
|
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
|
98
|
+
def Connect_ORA(self, string_connect: dict):
|
99
|
+
pathlib, msg, result = None, None, None
|
100
|
+
try:
|
101
|
+
# Definindo a Library ORACLE
|
102
|
+
if "library" in string_connect.keys():
|
103
|
+
if string_connect["library"] is None:
|
104
|
+
pathlib = os.getenv("ORACLE_LIB")
|
105
|
+
else:
|
106
|
+
pathlib = string_connect["library"]
|
107
|
+
else:
|
108
|
+
pathlib = os.getenv("ORACLE_LIB")
|
109
|
+
|
110
|
+
# Consistindo se a biblioteca do oracle ja esta iniciada
|
111
|
+
try:
|
112
|
+
ora.init_oracle_client(lib_dir=pathlib)
|
113
|
+
except:
|
114
|
+
pass
|
115
|
+
# não faz nada (e para deixar assim se nao da erro)
|
116
|
+
|
117
|
+
# Definindo o tipo de instancia SID/SERVICE_NAME
|
118
|
+
if string_connect["type_conection"].upper() == "SID":
|
119
|
+
dnsName = ora.makedsn(host=string_connect["host"], port=string_connect["port"], sid=string_connect["instance"])
|
120
|
+
else:
|
121
|
+
dnsName = ora.makedsn(host=string_connect["host"], port=string_connect["port"], service_name=string_connect["instance"])
|
122
|
+
|
123
|
+
# Efetuando a conexao com a instancia do BANCO
|
124
|
+
result = ora.connect(string_connect["username"], string_connect["password"], dnsName, threaded=True)
|
125
|
+
self._connection_is_valid = True
|
126
|
+
self._nome_database = gen.nvl(string_connect["database"], "")
|
127
|
+
self._cnn = result
|
128
|
+
self.__database_error = f"""{json.dumps(string_connect, indent=4).replace(string_connect["password"], "******")}\nConexao bem sucedida!"""
|
129
|
+
except Exception as error:
|
130
|
+
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} """
|
131
|
+
result = msg
|
132
|
+
self._connection_is_valid = False
|
133
|
+
self.__database_error = msg
|
134
|
+
finally:
|
135
|
+
return result
|
136
|
+
|
137
|
+
def Connect_SQLA(self, string_connect: dict):
|
138
|
+
conn = None
|
139
|
+
try:
|
140
|
+
# Definindo a Library ORACLE
|
141
|
+
if string_connect["path_library"] is None:
|
142
|
+
# ORACLE_LIB tem que estar previamente criada
|
143
|
+
pathlib = os.getenv("ORACLE_LIB")
|
144
|
+
else:
|
145
|
+
pathlib = string_connect["path_library"]
|
146
|
+
|
147
|
+
# Consistindo se a biblioteca do oracle ja esta iniciada
|
148
|
+
try:
|
149
|
+
ora.init_oracle_client(lib_dir=pathlib)
|
150
|
+
except:
|
151
|
+
pass
|
152
|
+
# não faz nada (e para deixar assim se nao da erro)
|
153
|
+
# Validando se foi passado um driver para conexao
|
154
|
+
if string_connect["driver_conexao"] is None:
|
155
|
+
string_connect["driver_conexao"] = "cx_oracle"
|
156
|
+
database = string_connect["database"]
|
157
|
+
driver = string_connect["driver_conexao"]
|
158
|
+
user = string_connect["username"]
|
159
|
+
pwd = string_connect["password"]
|
160
|
+
host = string_connect["host"]
|
161
|
+
port = string_connect["port"]
|
162
|
+
string_connect["instance"] = ora.makedsn(host, port, string_connect["instance"])
|
163
|
+
# Validando o tipo de conexao (SID ou SERVICE_NAME) apenas oracle
|
164
|
+
if string_connect["type_conection"].upper() == "SERVICE_NAME":
|
165
|
+
string_connect["instance"] = string_connect["instance"].replace("SID", "SERVICE_NAME")
|
166
|
+
dnsName = string_connect["instance"]
|
167
|
+
str_cnn = f"""{database.lower()}{driver}://{user}:{pwd}@{dnsName}"""
|
168
|
+
engine = sqa.create_engine(str_cnn)
|
169
|
+
result = engine.connect()
|
170
|
+
self._connection_is_valid = True
|
171
|
+
self._cnn = result
|
172
|
+
self.__database_error = f"""{json.dumps(string_connect, indent=4).replace(string_connect["password"], "******")}\nConexao bem sucedida!"""
|
173
|
+
self._nome_database = gen.nvl(string_connect["database"], "")
|
174
|
+
except Exception as error:
|
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} """
|
176
|
+
result = msg
|
177
|
+
self._connection_is_valid = False
|
178
|
+
self.__database_error = msg
|
179
|
+
finally:
|
180
|
+
return result
|
181
|
+
#endregion
|
182
|
+
|
183
|
+
#region PROPRIEDADES
|
184
|
+
@property
|
185
|
+
def CONNECTION(self):
|
186
|
+
return self.__cnn
|
187
|
+
|
188
|
+
@property
|
189
|
+
def CONNECTION_VALID(self):
|
190
|
+
return self.__connection_is_valid
|
191
|
+
|
192
|
+
@property
|
193
|
+
def NOME_DATABASE(self):
|
194
|
+
return self.__nome_database.upper()
|
195
|
+
|
196
|
+
@property
|
197
|
+
def DATABASE_ERROR(self):
|
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
|
@@ -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):
|
@@ -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):
|
@@ -0,0 +1,46 @@
|
|
1
|
+
import os
|
2
|
+
import json
|
3
|
+
|
4
|
+
from DE_Lib.Utils import Generic
|
5
|
+
|
6
|
+
gen = Generic.GENERIC()
|
7
|
+
|
8
|
+
class SQCIPHER:
|
9
|
+
def __init__(self):
|
10
|
+
self._connection_is_valid = None
|
11
|
+
self._nome_database = None
|
12
|
+
self._cnn = None
|
13
|
+
self.__database_error = None
|
14
|
+
|
15
|
+
def Connect(self, string_connect:dict, password):
|
16
|
+
DATABASE_NAME, result, msg, conn = None, False, None, None
|
17
|
+
try:
|
18
|
+
if os.path.isfile(os.path.join(string_connect["host"], string_connect["instance"])):
|
19
|
+
#conn = sqch.connect(database, password=password)
|
20
|
+
self._connection_is_valid = True
|
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!"""
|
24
|
+
except Exception as error:
|
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
|
27
|
+
self._connection_is_valid = False
|
28
|
+
self.__database_error = msg
|
29
|
+
finally:
|
30
|
+
return result
|
31
|
+
|
32
|
+
@property
|
33
|
+
def CONNECTION(self):
|
34
|
+
return self._cnn
|
35
|
+
|
36
|
+
@property
|
37
|
+
def CONNECTION_VALID(self):
|
38
|
+
return self._connection_is_valid
|
39
|
+
|
40
|
+
@property
|
41
|
+
def NOME_DATABASE(self):
|
42
|
+
return self._nome_database.upper()
|
43
|
+
|
44
|
+
@property
|
45
|
+
def DATABASE_ERROR(self):
|
46
|
+
return self.__database_error
|